Help avvio arduino senza usb

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); 
  }
}

la questione è semplice, al jack di Arduino NON puoi collegare una tensione inferiore a 7V, visto che a valle hai un diodo ed un regolatore; di conseguenza probabilmente stai alimentando Arduino a 3,5-4V, tutto qui.

Ma 5,2 Volt li hai misurati dall'alimentatore senza carico, oppure è la tensione riportata sull'alimentatore?

è la stessa cosa liso; se anche fosse una di quelle ciofeche cinesi che dichiarano 5V e poi a vuoto ne misuri 8, comunque con un minimo di carico scendono a 5V o peggio. Comunque 5,2V non è un valore standard "da etichetta", almeno io non ne ho visti mai, quindi credo li abbia misurati

Appunto questo mi ha insospettito, se era tipo un 12V e poi ne misurava 5,2 c'era qualche problema...
;), se invece è un buon alimentatore stabilizzato a 5, e non ha niente di meglio potrebbe usarlo per alimentare arduino

liso:
Appunto questo mi ha insospettito, se era tipo un 12V e poi ne misurava 5,2 c'era qualche problema...
;), se invece è un buon alimentatore stabilizzato a 5, e non ha niente di meglio potrebbe usarlo per alimentare arduino

Non può usarlo per alimentare Arduino, per le ragioni che ho spiegato, se è BEN stabilizzato potrebbe collegarlo direttamente al pin +5V ma non è una buona pratica.

Ok, intanto ho capito che non dipende dal codice, il tester indica 5,35 V collegandolo soltanto all'alimentatore, collegando anche i servo, mantengo quel voltaggio. Come posso risolvere?

ALT!!!! :blush: Non avevo collegato un gnd di controllo al negativo... Funziona perfettamente anche con i 5,3V. Scusatemi....
Ma a questo punto vi chiedo:

  • Arduino
  • 5 servo
  • 8 strisce da 5 led (con resistenza da 470 ohm ognuno) connessi a transistor da 120ma

L'alimentatore da 5,35V di 2000ma ce la farà?

devi avere le specifiche di tutta quella roba, sommarle e vedere a che corrente arrivi, altrimenti serve la Uwebox per scoprirlo.
Ripeto, se stai applicando alla presa jack japan 5,3V NON puoi avere 5V su Arduino, se ne vuoi la conferma di basta misurare la tensione sui pin 5V e GND di Arduino; il fatto che funzioni non significa niente, è comunque sottoalimentato, a meno che tu non abbia collegato contemporaneamente l'USB, nel qual caso il comparatore credo stia facendo lavorare quest'ultima.
NON ti conviene alimentare tutta quella roba tramite Arduino, devi invece usare quei 5V per alimentarli direttamente, lasciando ad Arduino una propria alimentazikone e solo le funzionalità di controllo (pwm, pilotaggio transistor, ecc.)

I servo hanno questa caratteristica:
Operating voltage: 3.0V~7.2V,
per i led la resistenza è relativa ai 5V,
il sensore di prossimità assorbe 5V
volevo evitare di mettere un alimentatore da 12V per non complicarmi la vita.
In ogni caso tutta quella roba è alimentata direttamente dalla fonte, effettivamente ora arduino, effettua solo funzioni di controllo,
ma cosa mi consigli per dargli una sua alimentazione? Una batteria? O un altro alimentatore? (anche se sarebbe scomodo e quasi superfluo)

non so, questo devi vederlo tu, in base alle tue esigenze ed in base a dove deve lavorare questa roba; per le prove lascia arduino collegato all'USB e metti in comune solo il negativo dell'alimentatore esterno col GND di Arduino. Quando sarai pronto per una installazione definitiva magari ti crei un circuito stand-alone, da alimentare assieme a tutto il resto e ti risparmi l'Arduino

Il mio prodotto finale sarà appeso a parete ed ha un interruttore on/off e scenderà il filo alla corrente.
Siccome non sono molto addentrato nella materia puoi spiegarmi meglio la tua ultima frase? Esempio mettere un condensatore che mi aumenti il voltaggio?
Grazie mille.

Andrewa80:
Il mio prodotto finale sarà appeso a parete ed ha un interruttore on/off e scenderà il filo alla corrente. Siccome non sono molto addentrato nella materia puoi spiegarmi meglio la tua ultima frase. Grazie mille.

Arduino è una piattaforma di sviluppo e prototipazione; nel momento in cui il tuo progetto sarà perfettamente funzionante potrai sostituire la scheda Arduino con una schedina tua con a bordo un semplice microcontrollore e qualche componente esterno, che interfaccerai alla tua componentistica esterna; in tal modo Arduino non ti serve più e sarà pronto per un altro prototipo.
Per capire cosa sto dicendo dai un'occhiata alla mia Guida, in firma ai miei post.
Comunque non ti preoccupare, tu pensa a far funzionare tutto che quando sarà il momento ti aiuteremo a realizzare il tuo stand-alone :wink:

aaah e io che pensavo di aver finito :grin:

diciamo che sei al 2% :smiley: non male 8)