Buy an Axon, Axon II, or Axon Mote and build a great robot, while helping to support SoR.
0 Members and 1 Guest are viewing this topic.
#include <string.h>//is this required for char?!//define port functions; example: PORT_ON( PORTD, 6);#define PORT_ON( port_letter, number ) port_letter |= (1<<number)#define PORT_OFF( port_letter, number ) port_letter &= ~(1<<number)//define electronics/ribs/motors to specific hardware pins#define RIB_1_Fin_Left( position ) servo("PORTD",6,position)#define RIB_2_Fin_Left( position ) servo("PORTD",5,position)//run servo based on pin hardware definitionvoid servo(char port[], int port_number, unsigned int cycles) { PORT_ON(port, port_number); // line 106 delay_cycles(cycles); PORT_OFF(port, port_number); // line 108 }in main:RIB_1_Fin_Left(35);
//define port functions; example: PORT_ON( PORTD, 6);#define PORT_ON( port_letter, number ) port_letter |= (1<<number)#define PORT_OFF( port_letter, number ) port_letter &= ~(1<<number)//define the servo function macro#define servo(port,number,position) (PORT_ON(port,number), delay_cycles(position), PORT_OFF(port,number))//define electronics/ribs/motors to specific hardware pins#define RIB_1_Fin_Left( position ) servo(PORTD,6,position)#define RIB_2_Fin_Left( position ) servo(PORTD,5,position)in main:RIB_1_Fin_Left(35);
//define port functions; example: PORT_ON( PORTD, 6);#define PORT_ON( port_letter, number ) port_letter |= (1<<number)#define PORT_OFF( port_letter, number ) port_letter &= ~(1<<number)//define the servo function macro#define servo(port,number,position) (PORT_ON(port,number), delay_cycles(position), PORT_OFF(port,number))//************CONFIGURE PORTS************//configure ports for input or output - specific to ATmega8void configure_ports(void) { //configure ports for input or output DDRA = 0x00; //configure all A ports for input PORTA = 0x00; //make sure pull-up resistors are turned off DDRB = 0x1F; //configure B ports 0->4 for output (google search '0b00011111 to hex') DDRC = 0xFF; //configure all C ports for output DDRD = 0xFC; //configure all D ports for output, except 0 and 1 (RX/TX) FC };//***************************************in main: servo(PORTC,0,45);//works servo(PORTC,1,45);//works servo(PORTC,2,45);//pin stays high servo(PORTC,3,45);//pin stays high servo(PORTC,4,45);//pin stays high servo(PORTC,5,45);//pin stays high servo(PORTC,6,45);//works servo(PORTC,7,45);//works servo(PORTD,7,45);//works