Problema con arduino

Salve,
E' da un bel pò che ho accquistato il mio arduino uno .
Lo ho sempre usato normalmente , ho comprato un clap sensor analogico che ho appena provato ad usare , cmq da poco arduino mi mette su[HIGH] tutte le I/O 1-13 , infatti ho avuto problemi perchè volevo testare il clap sensor con l'accensione di un led , poco dopo che arduino è acceso mi accende il led (provato a cambiare I/O port), lo ho resettato dall'apposito pulsante ... e dopo pochi secondi che si è resettato il led si accende .
Non capisco veramente cosa sia . :o

Prova a caricare lo sketch blink variando il lampeggio. Cosi ti togli il dubbio che sia rotto il fido arduino.
Poi se riesci a presentarti nell'apposito thread, alcuni moderatori saranno contenti.
Mi raccomando descrizione delle competenze e non il solito "Ciao sono nuovo!Sito Figata!" o simili. :smiley:

@insae401: essendo il tuo primo post, ti chiederei cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il REGOLAMENTO ... Grazie.

Guglielmo

@speedyant : :smiley: :smiley: :smiley:

Si il blink funziona

Allora c’è qualche problema con il clap sensor.
Riesci a postare lo sketch “dentro” i simboli </>?
Scrivi un messaggio a “caso”, cliccki su preview e sulla sinistra trovi il simbolo adatto.
Magari se metti anche il link dove li hai comprati, i clap sensor, forse si riesce ad aiutare meglio.

Non credo propio che sia il clap sensor , perchè resettando arduino dal tasto apposito lo continua a fare , quando si resetta arduino in teoria la sua memoria è vuota , oppure c'è su un programma che usa il pin 13 non ricordo bene , inoltre mettendogli su un programma che avevo fatto in precedenza per un tastierino numerico tipo password apri cancello che usa i pin 2-10 come input mi da lo stesso problema ... che il led si accende .

Scusa insae401, non ho ben capito il tuo problema ...
... ti si accende, anche se non lo usi, il LED sul pin 13 o hai problemi su TUTTI i pin ?

Perché se ti si accende il LED sul pin 13 quando non lo usi, è cosa nota ed è del tutto normale ...
... pin flottante, operazionale che pilota il LED lasciato libero, basta un nulla per accendere il LED. Se proprio ti infastidisce, definisci il pin 13 come OUTPUT e mettilo LOW.

Se invece hai problemi su altri pin ... spiega bene perché, come detto, non ho capito cosa esattamente succede.

Guglielmo

Il tasto reset si limita a "spegnere e riaccendere" la scheda, non cancella alcun programma contenuto in flash, al massimo "ripulisce" la ram.

speedyant:
… al massimo “ripulisce” la ram.

… no, non fa neanche quello :smiley: :smiley: :smiley:

Guglielmo

Ma allora a cosa serve, potevano risparmiare quei 2 centesimi del tasto...

Perché per certi casi (blocco del controller a causa di errori di programma o disturbi) o per iniziare manualmente un upload serve un reset.
Se vuoi per programmazione di un fuse puoi usare ilpin del reset come pin digitale come gli altri.

Ciao Uwe

speedyant:
Ma allora a cosa serve, potevano risparmiare quei 2 centesimi del tasto…

In realtà, in caso di errori o di problemi, ti evita di dover staccare e riattaccare l’alimentazione facendo ripartire la MCU come se l’avessi appena accesa.

Nota che all’accensione della MCU NON è assolutamente garantito che la SRAM sia azzerata, anzi, tutt’altro, comunque, normalmente, il compilatore mette a zero le variabili (numeriche) quando le dichiari.

Guglielmo

il problema comunque si verifica su tutti i pin digiatli , usati o non dallo skecht di comando , quindi se io collego 9 led dal 2 al 11 me li accende tutti anche se nel mio programma voglio accendere solo il 9 ,anche se non dichiaro gli altri led nel programma si accendono comunque , ovviamente questo è solo un esempio di skecht .

Allora metti il programma (… mi raccomando, in conformità al regolamento, punto 7, racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> … primo a sinistra) che stai usando perché c’è qualche cosa che non va.

Guglielmo

int  Bottone1 = 2 ;    // aumenta
int  Bottone2 = 3;    // aumenta
int  Bottone3 = 4;
int  Bottone4 = 5;
int  Bottone5 = 6;
int  Bottone6 = 7;
int  Bottone7 = 8;
int  Bottone8 = 9;
int  Bottone9 = 10;      //  led 1
const int led1 =  12;      //  led 2 
const int led2 =  13;
int valore = 0;
int fase = 0;
boolean letto1;
boolean letto2;
boolean letto3;
boolean letto4;
boolean letto5;
boolean letto6;
boolean letto7;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
boolean letto8;
boolean letto9;
const int x = 1000;
const int y = 10000;
const int val1 = 6;
const int val2 = 1;
const int val3 = 6;
const int val4 = 3;
int cnt = 0;
int premuto = 0;
void setup() {
  pinMode(led1, OUTPUT);  
  pinMode(led2, OUTPUT);  
  pinMode(Bottone1, INPUT);     
  pinMode(Bottone2, INPUT);
  pinMode(Bottone3, INPUT);
  pinMode(Bottone4, INPUT);
  pinMode(Bottone5, INPUT);
  pinMode(Bottone6, INPUT);
  pinMode(Bottone7, INPUT);
  pinMode(Bottone8, INPUT);
  pinMode(Bottone9, INPUT);
  
  Serial.begin(9600);
}

void loop() {
Serial.print("fase= "); 
Serial.println(fase);  


valore=digitalRead(Bottone1)+2*digitalRead(Bottone2)+3*digitalRead(Bottone3)+4*digitalRead(Bottone4)+5*digitalRead(Bottone5)+6*digitalRead(Bottone6)+7*digitalRead(Bottone7)+8*digitalRead(Bottone8)+9*digitalRead(Bottone9);
Serial.print("valore =");  
Serial.println(valore);
Serial.println(digitalRead(Bottone1));
Serial.print("fase =");  
Serial.println(fase);
Serial.print("cnt =");  
Serial.println(cnt);

digitalWrite(led2, LOW);
digitalWrite(led1, LOW); 


 switch (fase) {
  case 0:    // your hand is on the sensor
    if (valore == val1) {
    fase = 1;
    }
    if ((valore != val1) and (valore != 0)) {
    cnt = cnt+1;
    fase = 0;
    }
    
    break;
  case 1:    // your hand is close to the sensor
    if (valore == 0) fase = 2; 
    
    
    break;
  case 2:    // your hand is a few inches from the sensor
       if (valore == val2) {
    fase = 3;
    }
     if ((valore != val2) and (valore != 0)) {
    cnt = cnt+1;
    fase = 0;
    }
    
    break;
  case 3:    // your hand is nowhere near the sensor
    if (valore == 0) fase = 4;             
   
    break;
   case 4:
           if (valore == val3) {
    fase = 5;
    }
     if ((valore != val3) and (valore != 0)) {
    cnt = cnt+1;
    fase = 0;
    }
    break;
   case 5:
   if (valore == 0) fase = 6;             
  
    break;
    case 6:
           if (valore == val4) {
    fase = 7;
    }
     if ((valore != val4) and (valore != 0)) {
    cnt = cnt+1;
    fase = 0;
    }
    break;
       case 7:
   if (valore == 0) fase = 8 ;             
    break;
        case 8:
       Serial.println("IL CODICE è CORRETTO");
  digitalWrite(led1, HIGH); 
  delay(x); 
  
  cnt = 0;
  fase = 0; 
    break;
    
 }
      if (cnt >3) {
    digitalWrite(led2, HIGH);
    delay(y);
   
    cnt = 0;
    fase = 0;
  }

  
}