bonjour
je test un programme pour faire fonctionner un moteur dans les 2 sens (pont en H) pour un traceur solaire avec 4 photorésistances, j'vais un programme qui fonctionnait très bien, mais avec une carte shield grove, mais comme les puissances vont être supérieures, je passe ,avec 4 relais, par un pont en H.
j'ai donc fait des modifications, mais ça ne fonctionne pas, j'ai bien les infos sur le monitor des photosrésistances, je pense qu'il un un beug dans le void loop.
l'axe horizontal sera piloter par un treuil 12v et l'axe horizontal , par 2 vérins de portail de 300kg chacun
pour info, le traceur va faire 6 mètres de long, sur 1m60 de haut.
je ne sais pas a quoi servait le SUB FONCTIONS,Code:#include <SeeeduinoRelay.h> // Tracker solaire // DEFINES // photo resistance #define pinSensorEst A0 #define pinSensorOuest A1 #define pinSensorHaut A2 #define pinSensorBas A3 // relais pont en H vérin 1 et 4 sens horaire - 2 et 3 sens antihoraire int Relay1pin= 2; int Relay2pin= 4; int Relay3pin= 4; int Relay4pin= 2; //relais inverseur treuil int RelayApin= 7; int RelayBpin= 5; SeeeduinoRelay Relay1 = SeeeduinoRelay(2,LOW); SeeeduinoRelay Relay2 = SeeeduinoRelay(4,LOW); SeeeduinoRelay Relay3 = SeeeduinoRelay(4,LOW); SeeeduinoRelay Relay4 = SeeeduinoRelay(2,LOW); SeeeduinoRelay RelayA = SeeeduinoRelay(7,LOW); SeeeduinoRelay RelayB = SeeeduinoRelay(5,LOW); //déclaration LED //int pinLed1=13; //int pinLed2=12; //paramétrage delay #define delayPan 1000// Pan = EstOuest ou OuestEst #define delayTilt 1000// tilt = HautBas ou BasHaut #define delayWait 5000 // 30000 delay ente chaque boucle //paramétrage sensibilité #define sensibilite 10 // Marge de sensibilite #define luminositeMin 100 // 600Luminosité minimum pour le depart du programme // VARIABLES int valSensorEst = 0; // Bottom/Left photoresistor int valSensorOuest = 0; // Right photoresistor int valSensorHaut = 0; // Top photoresistor int valSensorBas = 0; // bas photoresistor void setup() { Serial.begin(9600); //Assign and set motor driver pins to low pinMode(Relay1pin, OUTPUT); digitalWrite(Relay1pin, HIGH); pinMode(Relay2pin, OUTPUT); digitalWrite(Relay2pin, HIGH); pinMode(Relay3pin, OUTPUT); digitalWrite(Relay3pin, HIGH); pinMode(Relay4pin, OUTPUT); digitalWrite(Relay4pin, HIGH); pinMode(RelayBpin, OUTPUT); digitalWrite(RelayBpin, HIGH); pinMode(RelayApin, OUTPUT); digitalWrite(RelayApin, HIGH); // pinMode(pinLed1,OUTPUT);//sortie led 1 //pinMode(pinLed2,OUTPUT);//sortie led 1 } void loop() { // read the sensor: valSensorEst = analogRead(pinSensorEst); valSensorOuest = analogRead(pinSensorOuest); valSensorHaut = analogRead(pinSensorHaut); valSensorBas = analogRead(pinSensorBas); // DEBUG Serial.print("valSensorEst = "); Serial.println(valSensorEst); Serial.print("valSensorOuest = "); Serial.println(valSensorOuest); Serial.print("valSensorHaut = "); Serial.println(valSensorHaut); Serial.print("valSensorBas = "); Serial.println(valSensorBas); if((valSensorEst+valSensorOuest)/2 > luminositeMin ){ // Compare value for the pan then for the tilt // PAN : between valSensorEst and valSensorOuest // TILT : between valSensorHaut and valSensorBas if(valSensorEst > valSensorOuest - sensibilite){ digitalWrite(RelayApin, delayPan); } if(valSensorEst < valSensorOuest + sensibilite){ digitalWrite(RelayBpin, delayPan); } if(valSensorHaut > valSensorBas - sensibilite){ digitalWrite(Relay1pin, delayTilt); digitalWrite(Relay4pin, delayTilt); digitalWrite(Relay2pin,LOW); digitalWrite(Relay3pin,LOW); } if(valSensorHaut < valSensorBas + sensibilite){ digitalWrite(Relay2pin, delayTilt); digitalWrite(Relay3pin, delayTilt); digitalWrite(Relay1pin,LOW); digitalWrite(Relay4pin,LOW); } } else{ Serial.println("LUMINOSITE TROP FAIBLE"); } delay(delayWait); } // END LOOP // SUB FONCTIONS //void moveMotor(int pinMotor, int valDelay){ //digitalWrite(pinMotor, HIGH); //delay(valDelay); //digitalWrite(pinMotor, LOW);
Merci d'avance, je continue a chercher
une photo du projet ( encours de construction)
-----