Salve a tutti ragazzi, mi è sorto un "problema", ho realizzato il codice per il mio progetto, è funzionante al 100% ma... con il cavo usb collegato.
Scollegando il cavo e connettendo un alimentatore da 5,2 V 2000ma non mi funziona più nulla. E da cosa lo deduco? Dal tx che non lampeggia più, a differenza del power che è acceso. Probabilmente c'è qualcosa di troppo nel mio codice? Ve lo riporto:
#include <Servo.h>
Servo s1;
Servo s2;
Servo s3;
Servo s4;
Servo s5;
long tempo;
int modalita=0;
int i=1;
int led=8;
int triggerPort = 9;
int echoPort = 8;
void setup() {
s1.attach(7);
s2.attach(6);
s3.attach(5);
s4.attach(4);
s5.attach(3);
pinMode(led, OUTPUT);
pinMode( triggerPort, OUTPUT );
pinMode( echoPort, INPUT );
Serial.begin( 9600 );
}
void loop() {
//porta bassa l'uscita del trigger
digitalWrite( triggerPort, LOW );
//invia un impulso di 10microsec su trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );
long duration = pulseIn( echoPort, HIGH );
long r = 0.034 * duration / 2;
Serial.print( tempo );
Serial.print( " durata: " );
Serial.print( duration );
Serial.print( " , " );
Serial.print( "distanza: " );
//dopo 38ms è fuori dalla portata del sensore
if( duration > 38000 ) Serial.println( "fuori portata");
else {
Serial.print( r ); Serial.println( "cm" );
if (r<=3) { tempo=tempo+500;
for (i=1;i<=8;i++) {
if (tempo==i*1000){
digitalWrite((led+i), HIGH);}
}
if (tempo>12000) { modalita=0; }
if (tempo>8000 && tempo<12000) { modalita=1;}
if (tempo>4000 && tempo<8000) { modalita=2;}
Serial.print( " modalita: " );
Serial.println( modalita );
}
if (r>3) {
tempo=0;
digitalWrite(12, LOW);
digitalWrite(13, LOW);
digitalWrite(14, LOW);
digitalWrite(15, LOW);
digitalWrite(16, LOW);
digitalWrite(17, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
}
switch (modalita) {
case 0:
s1.write(90);
s2.write(90);
s3.write(90);
s4.write(90);
s5.write(90);
break;
case 1:
if (r>3 && r<15) {
s1.write(180);
s2.write(180);
s3.write(0);
s4.write(0);
s5.write(180);
}
if (r>15 && r<30) {
s1.write(90);
s2.write(90);
s3.write(90);
s4.write(90);
s5.write(90);
}
if (r>30) {
s1.write(0);
s2.write(0);
s3.write(180);
s4.write(180);
s5.write(0);
}
break;
case 2:
if (r>3 && r<15) {
s1.write(0);
s2.write(0);
s3.write(180);
s4.write(180);
s5.write(0);
}
if (r>15 && r<30) {
s1.write(180);
s2.write(180);
s3.write(0);
s4.write(0);
s5.write(180);
}
if (r>30) {
s1.write(90);
s2.write(90);
s3.write(90);
s4.write(90);
s5.write(90);
}
break;
}
delay(500);
}
}