/ Published in: Processing
This is the code for our Arduino robot in Task 3
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
//Aquesta és la progrmació del prototip B, es a dir, la definitiva int Motor_Esq1=2, Motor_Esq2=4, Velocitat_Esq=3, Motor_Dret1=7, Motor_Dret2=8, Velocitat_Dret=6; //Declarem motors int sensor_valor_dret; int sensor_valor_esquerra; int pin_receptor_sensor_dret = A1; int pin_receptor_sensor_esquerra = A2; int blanc_o_negre = 930; int temps_delay = 10; int segona_vegada = 0; long temps_negres=99999999; long temps_nou=0; void setup() { pinMode(Motor_Esq1, OUTPUT); pinMode(Motor_Esq2, OUTPUT); pinMode(Velocitat_Esq, OUTPUT); pinMode(Motor_Dret1, OUTPUT); pinMode(Motor_Dret2, OUTPUT); pinMode(Velocitat_Dret, OUTPUT); Serial.begin(9600); } void loop() { //marco la potencia dels dos analogWrite(Velocitat_Esq, 230); analogWrite(Velocitat_Dret, 225); sensor_valor_dret = analogRead(pin_receptor_sensor_dret); sensor_valor_esquerra = analogRead(pin_receptor_sensor_esquerra); temps_nou= millis(); Serial.print(temps_nou); //Si els sensor dret es blanc i el sensor esquerra es blanc, tira endevant if (sensor_valor_dret< blanc_o_negre && sensor_valor_esquerra<blanc_o_negre) { endavant(temps_delay); Serial.println("entra"); } //Si el sensor dret es negre i el sensor esquerra es blanc, gira a la dreta else if (sensor_valor_dret>blanc_o_negre && sensor_valor_esquerra<blanc_o_negre) { dreta(temps_delay); } //Si el sensor dret es blanc i el sensor esquerra es negre, gira a l'esquerra else if (sensor_valor_dret<blanc_o_negre && sensor_valor_esquerra>blanc_o_negre) { esquerra(temps_delay); } //Si tots dos sensors son negres, posa els millis a 0 i gira a l'esquerra else if ( sensor_valor_dret>blanc_o_negre && sensor_valor_esquerra>blanc_o_negre) { if (segona_vegada == 0) { esquerra(temps_delay); segona_vegada ++; temps_negres=millis(); Serial.print("----------------------------------------------------------------"); } } //Si arriva al final, para if ((temps_nou-temps_negres)>1300) { delay(99999999999); } } //FUNCIONS void endavant(int temps) {//Motor dret endavant digitalWrite(Motor_Dret1, HIGH); digitalWrite(Motor_Dret2, LOW); //motor esquerra endavant digitalWrite(Motor_Esq1, HIGH); digitalWrite(Motor_Esq2, LOW); delay(temps); //paro el motor dret digitalWrite(Motor_Dret1, LOW); digitalWrite(Motor_Dret2, LOW); //paro el motor esquerra digitalWrite(Motor_Esq1, LOW); digitalWrite(Motor_Esq2, LOW); } void endarrera(int temps) {//Motor dret endarrera digitalWrite(Motor_Dret1, LOW); digitalWrite(Motor_Dret2, HIGH); //motor esquerra endarrera digitalWrite(Motor_Esq1,LOW); digitalWrite(Motor_Esq2,HIGH); delay(temps); //paro el motor dret digitalWrite(Motor_Dret1, LOW); digitalWrite(Motor_Dret2, LOW); //paro el motor esquerra digitalWrite(Motor_Esq1, LOW); digitalWrite(Motor_Esq2, LOW); } void dreta(int temps) { //Motor dret endarrera digitalWrite(Motor_Dret1, LOW); digitalWrite(Motor_Dret2, HIGH); //motor esquerra endavant digitalWrite(Motor_Esq1, HIGH); digitalWrite(Motor_Esq2, LOW); delay(temps); //paro el motor dret digitalWrite(Motor_Dret1, LOW); digitalWrite(Motor_Dret2, LOW); //paro el motor esquerra digitalWrite(Motor_Esq1, LOW); digitalWrite(Motor_Esq2, LOW); } void esquerra(int temps) { //Motor dret endavant digitalWrite(Motor_Dret1, HIGH); digitalWrite(Motor_Dret2, LOW); //motor esquerra endarrera digitalWrite(Motor_Esq1, LOW); digitalWrite(Motor_Esq2, HIGH); delay(temps); //paro el motor dret digitalWrite(Motor_Dret1, LOW); digitalWrite(Motor_Dret2, LOW); //paro el motor esquerra digitalWrite(Motor_Esq1, LOW); digitalWrite(Motor_Esq2, LOW); }