/* Web cam tower Author: vonPongrac ---------------------------------------------------------- INPUTS ---------------------------------------------------------- P1.0 - analog signal, potentiometer P2.0 - down P2.1 - left P2.2 - right P2.3 - up ---------------------------------------------------------- OUTPUTS ---------------------------------------------------------- P1.3 - servo 1CH, vertical P1.4 - servo 2CH, horizontal P1.6 - LED ---------------------------------------------------------- june 2013 IAR Embedded Workbench IDE */ #include "io430.h" #define MIN 110 // minimal pulse length, 0° #define MAX 647 // maximal pulse length, 180° #define koraki 180 // maksimum number of steps unsigned int kanal[2]={BIT3,BIT4}; // channels for servos unsigned int STEP=(MAX-MIN)/koraki; // pulze length of one step void delayms(unsigned int tms); // delay function, 1 ms resolution int readADC(); // reading analog value void servo(unsigned int korak1,unsigned int korak2); // generating servo signal void main( void ) { // position vector unsigned int pozicija[koraki+1]; int i=0; for(i=0;i180)smer2=180; // maximal value is 180 (maxsimal number of steps) P1OUT|=0x40; // LED ON }else if(~P2IN&0x01) // DOWN { smer1--; if(smer1<0)smer1=0; // minimal value is 0 P1OUT|=0x40; // LED ON }else if(~P2IN&0x04) // RIGHT { smer2--; if(smer2<0)smer2=0; P1OUT|=0x40; // LED ON }else if(~P2IN&0x08) // UP { smer1++; if(smer1>180)smer1=180; P1OUT|=0x40; // LED ON }else { P1OUT&=~0x40; // LED OFF } servo(pozicija[smer1],pozicija[smer2]); // set new position delayms(mer>>3); // delay in ms } } void delayms(unsigned int tms) { for(unsigned int i=0;i