// pins int buttonPin = 12; int motorPin = 9; int motorTrigger = 4; int Rpin = 3; int Gpin = 5; int Bpin = 6; int INDpin = 10; // variabili boolean bPress = LOW; boolean bPressPREV = LOW; boolean trigger; int motorPower = 150; // 0 - 255 int sTime = 0; int sTimeMax = 3000; int Rvalue = 0; int Gvalue = 0; int Bvalue = 0; int tempoEsposizione = 70; //ms void setup() { // pinModes pinMode (buttonPin, INPUT); pinMode (motorPin, OUTPUT); pinMode (motorTrigger, INPUT); pinMode (Rpin, OUTPUT); pinMode (Gpin, OUTPUT); pinMode (Bpin, OUTPUT); pinMode (INDpin, OUTPUT); // debug Serial.begin(9600); } void loop() { bPress = digitalRead(buttonPin); // pressione grilletto if (bPress && !bPressPREV) { //indicatore led analogWrite (INDpin, 255); // luce led setColor(random(767)); Serial.print("Esposizione - R"); Serial.print(Rvalue); Serial.print(" G"); Serial.print(Gvalue); Serial.print(" B"); Serial.print(Bvalue); Serial.print(" "); Serial.print(tempoEsposizione); Serial.print("ms"); Serial.print("\n"); ledsON(); delay(tempoEsposizione); ledsOFF(); //indicatore led analogWrite (INDpin, 50); // accendi motore Serial.print("Motore - "); Serial.print(motorPower); Serial.print("\n"); analogWrite(motorPin, motorPower); // attendi che completa il giro sTime = 0; do { sTime++; delay(1); } while (sTime < sTimeMax && !digitalRead(motorTrigger)); // breve pausa e poi spegni delay(50); analogWrite(motorPin, 0); Serial.print("Fine - "); Serial.print(sTime); Serial.print("ms"); Serial.print("\n\n"); } else { //indicatore led analogWrite (INDpin, 50); } // 5 ms di ritardo - stato bottone precedente bPressPREV = bPress; delay(5); } void setColor(int color) { if (color < 256) { Rvalue = 255 - color; Gvalue = color; Bvalue = 0; } if (color >= 256 && color < 512) { Rvalue = 0; Gvalue = 255 - (color - 256); Bvalue = (color - 256); } if (color >= 512) { Rvalue = (color - 512); Gvalue = 0; Bvalue = 255 - (color - 512); } } void ledsON() { analogWrite (Rpin, Rvalue); analogWrite (Gpin, Gvalue); analogWrite (Bpin, Bvalue); } void ledsOFF() { analogWrite (Rpin, 0); analogWrite (Gpin, 0); analogWrite (Bpin, 0); }