Arduino "impazzito"

sono confuso :~

Uso un Arduino mega 2560 ma deve avere qualche problema:

Stavo provando a simulare il telecomando infrarossi, quando per un inversione delle polarita ho bruciato un led emitente infrarossi.

quando poi sono andato a eseguire questo codice:

 Carlo Maragno # 11/6/11 
#include <Servo.h> 
const unsigned int BAUD_RATE = 9600;
const unsigned int LED_PIN = 13;

Servo myservo;  // create servo object to control a servo 
                // a maximum of eight servo objects can be created 
 
int pos = 0;    // variable to store the servo position 
 
void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(BAUD_RATE); 
} 

void loop() {
  if (Serial.available() > 0) { // <label id="code.welcome.available"/>
    int command = Serial.read();
      if (command == '1') { 
      for(pos = 0; pos < 180; pos +=15)  // goes from 0 degrees to 180 degrees                                // in steps of 1 degree 
      myservo.write(pos);              // tell servo to go to position in variable 'pos' 
      delay(5);                       // waits 15ms for the servo to reach the position 
      Serial.println("ok");}      
      else if (command == '2') 
      for(pos = 180; pos>=1; pos-=15)     // goes from 180 degrees to 0 degrees 
  {   myservo.write(pos);              // tell servo to go to position in variable 'pos' 
      delay(5);                       // waits 15ms for the servo to reach the position
      Serial.println("attendi"); {
      }     
  }
 }   
}

l’ Arduino mi restituiva dei dati stupidi sulla seriale o addirittura si accendeva la L e poi più niente ,muoveva servo in maniera stupida e non come voglio io ossia 1: 0-180 2: 180-0

pero se uso invece uso questo

#define led 13  // led connesso al pin n°13
byte rx = 0;    // variabile per contenere il carattere ricevuto
 
void setup()
	{
	Serial.begin(9600); // imposto la UART per lavorare a 9600
	pinMode(led, OUTPUT); // imposto il pin sul quale è collegato il led come uscita
	Serial.flush(); // svuoto il buffer di ricezione seriale
	}
 
void loop()
	{
 
	if (Serial.available() >0) // Controllo se il buffer di ricezione contiene qualcosa
		{
		rx = Serial.read(); // leggo il carattere ricevuto e lo memorizzo in rx
		Serial.flush(); // svuoto il buffer di ricezione seriale
 
		if (rx=='L' || rx=='l') // ho ricevuto la L maiuscola o minuscola
			{
 
			if (digitalRead(led) == HIGH) // il led era acceso?
				{
				digitalWrite(led,LOW); // lo spengo
				Serial.println("Led spento");
				}
			else // il led era spento
				{
				digitalWrite(led,HIGH); // lo accendo
				Serial.println("Led acceso");
				}
 
			}
 
		else // non ho ricevuto la L
 
			{
			Serial.print("Hai premuto: ");
			Serial.print(rx,BYTE);
			Serial.println();
			}
		}
	}

si accende e si spegne la L sulla basetta (che non ho ancora capito a cosa serve quella L)

forse è perché la memoria della Arduino è piena? ma sui mega c’è l’auto bootloder
si è bruciato tutto? no perché sennò il secondo codice non funzionerebbe

ma forse non capisco qualcosa rispondetemi vi prego.

se riesci a caricare uno sketch il bootloader e la comunicazione funzionano. carica lo sketch blink sul pin che usavi per il led ir e mettici sù un led normale (con la resistenza) e vedi cosa fà, dovrebbe lampeggiare una volta al secondo se è tutto ok.

non è che si è brucita una connessione interna al micro ? perchè invertendo il led di polarità ha causato un corto.....

Il LED denominato L é un led che é attacato al pin 13 e serve per poter far accendere qualcosa se si vuole controllare se il sketch funziona. Ciao Uwe

ratto93: non è che si è brucita una connessione interna al micro ? perchè invertendo il led di polarità ha causato un corto.....

Ma un LED è un diodo: invertendolo non passa la corrente.

leo72:

ratto93: non è che si è brucita una connessione interna al micro ? perchè invertendo il led di polarità ha causato un corto.....

Ma un LED è un diodo: invertendolo non passa la corrente.

vero ma magari il led era già fulminato per altri motivi... e quindi in corto.... e poi non vi è mai successo che vi vendano un led o con i piedini tagliati al contrario oppure difettoso ? cavolo capitano solo a me :disappointed_relieved:

ratto93: non vi è mai successo che vi vendano un led o con i piedini tagliati al contrario oppure difettoso ? cavolo capitano solo a me :disappointed_relieved:

A me mai :D

Magari e andato sotto la tensione di breakdown quindi ha bruciato qualche cosa

be innanzitutto grazie per i consigli ma adesso ho il pc rotto (sto scrivendo da quello di mia sorella) e quindi non posso testare niente, forse mi sono male espresso il led era un ricevitore di quelli a 3 trerminali ( + - DATA) io avevo collegato il data a un pwm (il n° 9) da allora non mi sono più funzionati i servo.

boooooo

grazie ancora per le risposte CarloMaragno

CarloMaragno: be innanzitutto grazie per i consigli ma adesso ho il pc rotto (sto scrivendo da quello di mia sorella) e quindi non posso testare niente, forse mi sono male espresso il led era un ricevitore di quelli a 3 trerminali ( + - DATA) io avevo collegato il data a un pwm (il n° 9) da allora non mi sono più funzionati i servo.

boooooo

grazie ancora per le risposte CarloMaragno

Intanto, in genere sono DATA-GND-V+; come li hai descritti tu hai fatto un collegamento invertito, ma quello non è un LED infrarosso, è un circuito integrato; di solito il pin V+ si collega all'alimentazione tramite una R da 100 ed un C da 47µF; ora, se anche hai collegato i 5v tramite una R da 100 al DATA dell'IR, non hai potuto rompere nulla, al massimo il transistor dell'IR, certamente non un pin del mcu; altro è se hai usato 12V per le prove. Quando riuscirai prova a postare lo schema del collegamento che avevi fatto e si potrà stabilire cos'è successo.

menniti: Quando riuscirai prova a postare lo schema del collegamento che avevi fatto e si potrà stabilire cos'è successo.

A cosa pensi? All'arrosto di ferragosto? ]:D (cacchio, ho fatto la rima! XD)

leo72:

menniti: Quando riuscirai prova a postare lo schema del collegamento che avevi fatto e si potrà stabilire cos'è successo.

A cosa pensi? All'arrosto di ferragosto? ]:D (cacchio, ho fatto la rima! XD)

Tu hai fatto la rima perché hai lavorato, io ho fatto ben altro per un'intera nottata :grin:, avendo litigato direttamente con quell'arrosto, oggi brodino freddo, stasera insalatina leggera, ma domani si ricomincia! ]:D