#include #include Motor pojezd(30,32,8); Motor zataceni(31,33,9); int zateceniInterval=250; IrDekoder ir(24); int predniSvetlaPin=52; boolean predniSvetla=false; int zadniSvetlaPin=53; boolean zadniSvetla=false; int proximityPin=A0; int proximity; int tonePin=12; long toneT=-1; int toneLength=100; int tonePause=500; int toneState=0; int sw1Pin=23; int sw2Pin=25; int sw1,sw2; void setup() { pinMode(predniSvetlaPin,OUTPUT); digitalWrite(predniSvetlaPin,predniSvetla); pinMode(zadniSvetlaPin,OUTPUT); digitalWrite(zadniSvetlaPin,zadniSvetla); pinMode(sw1Pin,INPUT); pinMode(sw2Pin,INPUT); pinMode(22,OUTPUT); digitalWrite(22,LOW); //power for IR decoder - 0V from 22; 5V from 5V Serial.begin(9600); } void loop() { //proximity proximity=analogRead(proximityPin); if( proximity >=600 && pojezd.getMotorDirection()==1 )pojezd.stopMotor(); if( proximity >=300 ) { if( toneState==0 ) { //turn on analogWrite(tonePin,1000+proximity*8); toneT=millis(); toneState=1; }else if( toneState==1 ){ if( millis()-toneT>=toneLength ) { noTone(tonePin); toneT=millis(); toneState=2; } }else if( toneState==2 ){ if( millis()-toneT >= tonePause*(1024/proximity) ) { toneState=0; } } }else{ noTone( tonePin ); toneState=0; } //back sw1=digitalRead(sw1Pin); sw2=digitalRead(sw2Pin); if( (sw1==0 || sw2==0) && pojezd.getMotorDirection()==-1 )pojezd.stopMotor(); //IR if( ir.recievedData() ) { switch( ir.getRecievedData() ) { case 586: //zeleny tlacitko: PREDNI SVETLA predniSvetla=!predniSvetla; digitalWrite(predniSvetlaPin,predniSvetla); delay(100); break; case 74: //zeleny tlacitko: ZADNI SVETLA zadniSvetla=!zadniSvetla; digitalWrite(zadniSvetlaPin,zadniSvetla); delay(100); break; //POJEZD case 594: //nahoru DOPREDU pojezd.stopMotor(); pojezd.forward(); delay(100); break; case 338: //dolu DOZADU pojezd.stopMotor(); pojezd.backward(); delay(100); break; case 1002: //menu STOP pojezd pojezd.stopMotor(); delay(100); break; case 658: //doleva DOLEVA zataceni.stopMotor(); zataceni.forward(); delay(zateceniInterval); zataceni.stopMotor(); break; case 146: //doprava DOPRAVA zataceni.stopMotor(); zataceni.backward(); delay(zateceniInterval); zataceni.stopMotor(); break; } }//END IR }