Go Down

Topic: Help avvio arduino senza usb (Read 1 time) previous topic - next topic

Andrewa80

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:
Code: [Select]
#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);
  }
}

Michele Menniti

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.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

liso

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

Michele Menniti

è 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
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

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

Go Up