Pages: [1] 2   Go Down
Author Topic: utilizzare pin 13  (Read 932 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 2
Posts: 243
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

buongiorno,
ho la necessita di utilizzare il pin13 per comandare un contattore....solamente che appena collego l'arduino alla 12V
l'uscita lampeggia e questo mi fa attrarre il conttatore 4-5 volte. come posso evitarlo?
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai caricato il tuo programma sull'Arduino ?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22651
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sul pin 13 è presente anche il led "L", che viene usato durante il reset per segnalazioni da parte del bootloader.
Collegando l'alimentazione la prima volta, il led "L" però non lampeggia. Lampeggia se successivamente viene resettato l'Atmega328, il reset avviene anche per l'apertura della porta seriale.
Personalmente ho provato anche a collegare 12V al jack di Arduino e, come supponevo, la prima volta il led non lampeggia.

Che versione dell'Arduino usi? UNO R1, UNO R2, MEGA ecc..?
Logged


0
Offline Offline
Full Member
***
Karma: 2
Posts: 243
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho l'uno...se stacco l'alimentazione e la riattacco, prima di partire il programma corretto, lampeggia il LED e quindi di conseguenza anche il mio contattore
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22651
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ho l'uno...
Che versione? R1, R2, R3?
Io ho la R1 ma con il bootloader della R3 e se attacco l'alimentazione il led non lampeggia. Lampeggia solo se successivamente premo il tasto di reset.
Logged


0
Offline Offline
Full Member
***
Karma: 2
Posts: 243
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

UNO R3...
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 564
Posts: 12459
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ovvio che il,primo consiglio è quello di spostarti al pin 12 smiley-grin ma resterebbe il mistero, non puoi postare il tuo codice?
Logged

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

0
Offline Offline
Full Member
***
Karma: 2
Posts: 243
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sisi è che ho finito i pin...cmq lo posto!

Code:
include <LiquidCrystal.h>


#define ON 1
#define OFF 0

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


const int enel = 6;
const int gruppo = 7;
const int rele1 = 8;
const int rele2 = 9;
const int contattore = 10;
const int spia = 13;



boolean stato_enel;
boolean stato_gruppo;
boolean flag =0;
boolean error =false;
int cicli =0;



void setup(){
  Serial.begin(9600);
  lcd.begin(16, 4);
 
  lcd.clear();


  pinMode(enel, INPUT_PULLUP);
  pinMode(gruppo, INPUT_PULLUP);
 
  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);
  pinMode(contattore, OUTPUT);
  pinMode(spia, OUTPUT);
}


void ritardo(int i){
  Serial.print("Sto aspettando ");
  Serial.print(i);
  Serial.println(" secondi");
  for (int k=0; k<i; k++){
  lcd.setCursor(0,3);
  lcd.print("Wait ");
  lcd.print(i-k);
  lcd.write(" secondi      ");
    delay(1000);
  }
}

void accensione_gruppo() {
  Serial.println("Accensione gruppo elettrogeno in corso...");
  lcd.setCursor(0,2);
  lcd.print("Accensione...   ");
  lcd.setCursor(0,3);
  Serial.print("Tentativo n: ");
  lcd.print("Tentativo : ");
  Serial.println(cicli+1);
  lcd.print(cicli+1);
  lcd.print("  ");
  delay(2000);
  digitalWrite(rele1, HIGH);
  delay(2000);
  digitalWrite(rele2, HIGH);
  delay(1500);
  digitalWrite(rele2,LOW);
  cicli++;
}

void spengimento_gruppo(){
  Serial.println("Spengimento gruppo elettrogeno in corso...");
  lcd.setCursor(0,2);
  lcd.print("Spengimento...  ");
  ritardo(18);
  digitalWrite(contattore, LOW);
  ritardo(6);
  digitalWrite(rele1, LOW);
}

void errore() {
  digitalWrite(spia, HIGH);
  digitalWrite(rele1, LOW);
  digitalWrite(rele2, LOW);
  error = true;
  Serial.println("ERRORE IL GRUPPO NON SI E' ACCESO");
  lcd.setCursor(0,2);
  lcd.print("     ERRORE     ");
  lcd.setCursor(0,3);
  lcd.print("NON SI E' ACCESO");
}





void loop(){
  stato_enel = digitalRead(enel); //controllo se c'è rete
  stato_gruppo = digitalRead(gruppo);
  Serial.print("Stato Enel: ");
  Serial.println(stato_enel);
  Serial.print("Stato Gruppo: ");
  Serial.println(stato_gruppo);
  lcd.setCursor(0,0);
  lcd.print("ENEL   : ");
  if(stato_enel==ON)
    lcd.print("OK     ");
  else lcd.print("ASSENTE");
  lcd.setCursor(0,1);
  lcd.print("GRUPPO : ");
  if(stato_gruppo==ON)
    lcd.print("ON ");
  else lcd.print("OFF");
 
 
  //Senza enel
  if (stato_enel== OFF){ //senza ENEL

    if (stato_gruppo == OFF) {  //Gruppo Spento

      if(cicli == 0) {
        lcd.setCursor(0,2);
        lcd.print(" Sto aspettando ");
        ritardo(12);
      }
      if (digitalRead(enel) == 0) {
        if(cicli<3) accensione_gruppo();
        else errore();
      }
     
    }
    if (stato_gruppo == ON){ //Gruppo Acceso e non attaccato
      if (flag == 0){
        Serial.println("Gruppo acceso");
        lcd.setCursor(0,2);
        lcd.print("Gruppo Acceso   ");
        ritardo(15); //15 secondi
        digitalWrite(contattore, HIGH);
        flag = 1;
        cicli = 0;
      }
      if (flag == 1) {
        Serial.println("Gruppo acceso e collegato");
          lcd.setCursor(0,3);
          lcd.print("Gruppo collegato");
      }
    }
  }

  //c'è Enel
  if (stato_enel == ON ) {
    if (stato_gruppo == ON) {
      spengimento_gruppo();
      flag = 0;
      cicli=0;
    }
    if (stato_gruppo == OFF) {
      Serial.println(" Tutto OK");
      lcd.setCursor(0,2);
      if (error == true ) lcd.print("     ERRORE     ");
      else lcd.print("                ");
      lcd.setCursor(0,3);
      lcd.print("    Tutto OK    ");
  }
}

}
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22651
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non hai finito i pin, mi pare che tu non usi quelli analogici.
Sappi che questi pin possono essere utilizzati come normali pin digitali semplicemente indirizzandoli con i valori da 14 a 19 rispettivamente per A0...A5.

Comunque a me con la R1 il led non lampeggia quando collego la scheda. Ci vorrebbe la testimonianza di qualcun altro che ha la R3, forse il firmware dell'Atmega16U2 gestisce in modo diverso l'avvio.
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 564
Posts: 12459
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nello sketch parli di "spia", cosa è attaccato esattamente al pin 13?
Come ti ha detto Leo puoi usare i pin analogici come digitali, ma un'altra prova potrebbe essere quella di scambiare 12 e 13 tra loro e vedere cosa succede a livello di LCD.
Logged

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

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 124
Posts: 9331
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Io ho la R1 ma con il bootloader della R3 e se attacco l'alimentazione il led non lampeggia. Lampeggia solo se successivamente premo il tasto di reset.

Sulla mia UNO R1 con optiboot aggiornato all'ultima versione il led non lampeggia mai quando si connette l'alimentazione indipendentemente se è da USB o esterna, lo fa solo resettandola.
In tutti i casi i lampeggi dipendono dal bootloader e non dalla parte USB, però gli Arduino dotati di FTDI resettano sempre e comunque, anche con l'ultimo optiboot, perché all'avvio l'FTDI commuta varie volte lo stato del DTR e questo causa il reset della scheda.
Probabilmente, tocca verificare nel sorgente del optiboot, il bootloader fa distinzione tra la condizione di power on e quella di reset, se è la prima non si avvia, quindi niente lampeggi del led, e cede subito il controllo al programma utente.
Logged

Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Io ho la R1 ma con il bootloader della R3 e se attacco l'alimentazione il led non lampeggia. Lampeggia solo se successivamente premo il tasto di reset.

Sulla mia UNO R1 con optiboot aggiornato all'ultima versione il led non lampeggia mai quando si connette l'alimentazione indipendentemente se è da USB o esterna, lo fa solo resettandola.
In tutti i casi i lampeggi dipendono dal bootloader e non dalla parte USB, però gli Arduino dotati di FTDI resettano sempre e comunque, anche con l'ultimo optiboot, perché all'avvio l'FTDI commuta varie volte lo stato del DTR e questo causa il reset della scheda.
Probabilmente, tocca verificare nel sorgente del optiboot, il bootloader fa distinzione tra la condizione di power on e quella di reset, se è la prima non si avvia, quindi niente lampeggi del led, e cede subito il controllo al programma utente.
Nella mia UNO R3 quando viene connessa l'alimentazione, lampeggia il led L per farti vedere che il bootloader è partito
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 124
Posts: 9331
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nella mia UNO R3 quando viene connessa l'alimentazione, lampeggia il led L per farti vedere che il bootloader è partito

Probabilmente sulla tua c'è ancora la vecchia versione dell'optiboot, quella nuova la trovi allegata all'IDE 1.0.1

Logged

Dueville (VI)
Online Online
Edison Member
*
Karma: 28
Posts: 1747
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nella mia UNO R3 quando viene connessa l'alimentazione, lampeggia il led L per farti vedere che il bootloader è partito

Probabilmente sulla tua c'è ancora la vecchia versione dell'optiboot, quella nuova la trovi allegata all'IDE 1.0.1


Ah, mi tocca pure aggiornare il bootloader?!?!? Ahahaha che pollo, sta sera faccio l'update!
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22651
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

sta sera faccio l'update!
Lo puoi fare anche do mani, se è per questo. smiley-wink
Logged


Pages: [1] 2   Go Up
Jump to: