Comportamento anomalo

Non appena collego arduino alla porta USB comincia a lampeggiare L ininterrotamentee non smette più!
Faccio di tutto ma il problema persiste!!!!!!
Che si fa?!?

Andrea

Ma che cos'e' che lampeggia? Quale led?

Il led 13!

Non e' che c'e' caricato su lo sketch blinkled? Se carichi altri sketch cosa fa?

Sempre la stessa cosa..:frowning:

ma riesci a caricarne altri di sketch?

Qualsiasi skect carichi ottengo ora questi errori:

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

quindi come se ci fossere impostsazioni sbagliate.
La board è impostata giusta, mentre come bootloader cosa metto?

sei sicuro che in tools-> board sia impostata la tua board?
per il bootloader se NON sbaglio l'uno vale l'altro

Sono sicurissimo

prova a tener resettato qundo inizi a caricare un nuovo sketch

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1226443525

Ho risolto grazie:-)

int Led = 12;
int value =LOW;

int Csharp;
#include <avr/io.h>
#include <avr/wdt.h>

#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

void setup() {
  Reset_AVR();

  Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
  pinMode(Led, OUTPUT);
}

void loop() {

  if (Serial.available() > 0) {

    Csharp = Serial.read();

    Serial.println(Csharp, DEC);




      if (value == LOW) value = HIGH;
      else value = LOW;

      digitalWrite(Led, value);}


  }

Ecco con questo semplice codice ho combinato il pasticcio : Il pin 13 da quando ho caricato questo sketch lampeggia all'impazzata....!
Cosa c'è che non va?!?
L'obiettivo di questo codice è resettare arduino da software in modo tale da non premere ogni volta che ricollego l'apparecchio al PC il tasto reset sulla scheda.

Grazie in anticipo

forse sbaglio ma il comando nel setup non resetta ad ogni accensione facendo un cilco continuo?

Si è vero! Quale sarebbe la soluzione più idonea?!

mettere un controlo che se quello che ricevi via seriale corrisponde al dato giusto esegue il comando
Reset_AVR();

int Led = 12;
int value =LOW;

int Csharp;
#include <avr/io.h>
#include <avr/wdt.h>

#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}

void setup() {
  

  Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
  pinMode(Led, OUTPUT);
}

void loop() {

  if (Serial.available() > 0) {

    Csharp = Serial.read();

    if (Csharp == 123) Reset_AVR();




      if (value == LOW) value = HIGH;
      else value = LOW;

      digitalWrite(Led, value);

}
delay(50);

  }

prova così

Ma il reset lo si deve fare ogni qual volta si fa apre la porta...Come dovrei fare?!

Ciao

Il computer effettua il reset in automatico ogni volta che apre la porta seriale per poter poi caricare del codice, tu non devi fare nulla.

Il tuo programma precedente resetta la scheda entro 30 millisecondi dal caricamento perche hai messo Reset_AVR() all'inizio del setup.
questo vuol dire che ogni programma carichi contiua a far resettare il processore appena parte.
da qui il lampeggio continuo che vedevi.

Il codice di garinus ti fa capire come va utilizzato correttamente Reset_AVR(). Il comando di reset viene eseguito solo quando mandi un carattere specifico, in questo caso il 123.

Ok Comincio ad inquadrare la situazione. A sto punto, quand è che devo inviare i caratteri 123 alla seriale, considerando che la mia applicazione ha un bottone premendo il quale cambio lo stato del LED 12?!