Pages: 1 2 [3]   Go Down
Author Topic: SELETTORE BCD  (Read 2051 times)
0 Members and 1 Guest are viewing this topic.
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se io metto pinMode(pin,INPUT)
e poi digitalWrite(pin,HIGH)

il compilatore mi dice che non può farlo perchè il pin è impostato come ingresso (e direi che ha PIENAMENTE ragione........)
@Michele Menniti Non ho ancora la palla disponibile; forse un uvetto potrebbe andare bene ugualmente?
@lightman750 Che compilatore usi?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eccolo:

const int LED1 = 5;                    //Led e uscita connesso pin 5
const int LED_ALARM = 6;               //Led di allarme connesso pin 6
const int PULS_UP = 2;                 //Sonda UP connesso pin 2
const int PULS_DW = 7;                 //Sonda DW connesso pin 7
const int BIT1 = 3;                    //Bit 1 Selettore
const int BIT2 = 4;                    //Bit 2 Selettore
const int BIT3 = 8;                    //Bit 3 Selettore
const int BIT4 = 9;                    //Bit 4 Selettore

int PULS_UP_State = 0;                 //variabile Puls UP
int PULS_DW_State = 0;                 //variabile Puls DW
int PIN_1 = 0;
int PIN_2 = 0;
int PIN_3 = 0;
int PIN_4 = 0;
int PIENO = 0;                         //variabile condizione di riempimento
int ALLARME = LOW;                     //variabile allarme
int TEMPO = 0;                         //variabile per misurazione tempo di allarme
int VALORE_SEL = 0;                    //Reset Selettore



void setup()  {
  pinMode(LED1, OUTPUT);               //inizializzazione dei PIN
  pinMode(LED_ALARM,OUTPUT);
  pinMode(PULS_UP, INPUT);
  pinMode(PULS_DW, INPUT);
  pinMode(BIT1,INPUT);
  pinMode(BIT2,INPUT);
  pinMode(BIT3,INPUT);
  pinMode(BIT4,INPUT);
  
  
  digitalWrite(LED_ALARM, LOW);
  digitalWrite(LED1, LOW);
  digitalWrite(BIT1, HIGH);
Logged

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

manca la { di chiusura alla void setup e manca completamente la void loop, le hai "tagliate" nel copia incolla o ti mancano? se mancano gli errori sono di sicuro quelli, tanto per cominciare....
così a me compila correttamente:
Code:
const int LED1 = 5;                    //Led e uscita connesso pin 5
const int LED_ALARM = 6;               //Led di allarme connesso pin 6
const int PULS_UP = 2;                 //Sonda UP connesso pin 2
const int PULS_DW = 7;                 //Sonda DW connesso pin 7
const int BIT1 = 3;                    //Bit 1 Selettore
const int BIT2 = 4;                    //Bit 2 Selettore
const int BIT3 = 8;                    //Bit 3 Selettore
const int BIT4 = 9;                    //Bit 4 Selettore

int PULS_UP_State = 0;                 //variabile Puls UP
int PULS_DW_State = 0;                 //variabile Puls DW
int PIN_1 = 0;
int PIN_2 = 0;
int PIN_3 = 0;
int PIN_4 = 0;
int PIENO = 0;                         //variabile condizione di riempimento
int ALLARME = LOW;                     //variabile allarme
int TEMPO = 0;                         //variabile per misurazione tempo di allarme
int VALORE_SEL = 0;                    //Reset Selettore

void setup()  {
  pinMode(LED1, OUTPUT);               //inizializzazione dei PIN
  pinMode(LED_ALARM,OUTPUT);
  pinMode(PULS_UP, INPUT);
  pinMode(PULS_DW, INPUT);
  pinMode(BIT1,INPUT);
  pinMode(BIT2,INPUT);
  pinMode(BIT3,INPUT);
  pinMode(BIT4,INPUT);
 
  digitalWrite(LED_ALARM, LOW);
  digitalWrite(LED1, LOW);
  digitalWrite(BIT1, HIGH);
}

void loop()  {}
« Last Edit: April 09, 2012, 01:26:04 pm by Michele Menniti » 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

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

Se io metto pinMode(pin,INPUT)
e poi digitalWrite(pin,HIGH)

il compilatore mi dice che non può farlo perchè il pin è impostato come ingresso (e direi che ha PIENAMENTE ragione........)
Questo errore non esiste, semplicemente te lo sei inventato. Non hai neppure provato.


* Immagine.jpg (35.16 KB, 510x603 - viewed 5 times.)
Logged


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

Inoltre, casomai tu non ne fossi a conoscenza:
http://arduino.cc/en/Reference/Constants

Quote
A pin may also be configured as an INPUT with pinMode, and subsequently made HIGH with digitalWrite, this will set the internal 20K pullup resistors, which will steer the input pin to a HIGH reading unless it is pulled LOW by external circuitry.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Voi avete ragione. Ho dovuto reinstallare il compilatore (quello originale) e oggi funziona. Mah.......
Il resto dello sketch l'ho volutamente non copiato perchè funziona. Comunque vi posto il listato intero (ovviamente non è finito) e vediamo cosa ne pensate e se è possibile semplificarlo.



const int LED1 = 5;                    //Led e uscita connesso pin 5
const int LED_ALARM = 6;               //Led di allarme connesso pin 6
const int PULS_UP = 2;                 //Sonda UP connesso pin 2
const int PULS_DW = 7;                 //Sonda DW connesso pin 7
const int BIT1 = 3;                    //Bit 1 Selettore
const int BIT2 = 4;                    //Bit 2 Selettore
const int BIT3 = 8;                    //Bit 3 Selettore
const int BIT4 = 9;                    //Bit 4 Selettore

int PULS_UP_State = 0;                 //variabile Puls UP
int PULS_DW_State = 0;                 //variabile Puls DW
int PIN_1 = 0;
int PIN_2 = 0;
int PIN_3 = 0;
int PIN_4 = 0;
int PIENO = 0;                         //variabile condizione di riempimento
int ALLARME = LOW;                     //variabile allarme
int TEMPO = 0;                         //variabile per misurazione tempo di allarme
int VALORE_SEL = 0;                    //Reset Selettore



void setup()  {
  pinMode(LED1, OUTPUT);               //inizializzazione dei PIN
  pinMode(LED_ALARM,OUTPUT);
  pinMode(PULS_UP, INPUT);
  pinMode(PULS_DW, INPUT);
  pinMode(BIT1,INPUT);
  pinMode(BIT2,INPUT);
  pinMode(BIT3,INPUT);
  pinMode(BIT4,INPUT);
 
 
  digitalWrite(LED_ALARM, LOW);
  digitalWrite(LED1, LOW);
  digitalWrite(BIT1, HIGH);
  digitalWrite(BIT2, HIGH);
  digitalWrite(BIT3, HIGH);
  digitalWrite(BIT4, HIGH);
  }
 
  //loop del programma
 
void loop()  {
  PULS_UP_State = digitalRead(PULS_UP);
  PULS_DW_State = digitalRead(PULS_DW);
  PIN_1 = digitalRead(BIT1);
  PIN_2 = digitalRead(BIT2);
  PIN_3 = digitalRead(BIT3);
  PIN_4 = digitalRead(BIT4);

   
  if (PULS_UP_State == LOW && PULS_DW_State == LOW && PIENO == HIGH)  {
    int (PIENO = LOW);                                                            //se le sonde sono basse e risultava pieno, resetto il flag PIENO
    digitalWrite(LED_ALARM, LOW);
    delay(100);
    }
  if (PULS_UP_State == HIGH && PULS_DW_State == LOW && PIENO == LOW) {
    digitalWrite(LED1, LOW);                                                     //se leggo solo la sonda di MAX abilitata metto in allarme
    digitalWrite(LED_ALARM, HIGH);
    digitalWrite(ALLARME, HIGH);
    delay(100);
    }
  if (PULS_UP_State == HIGH && PULS_DW_State == LOW && PIENO == HIGH) {
    digitalWrite(LED1, LOW);                                                     //se smetto di leggere la sonda MIN metto in allarme
    digitalWrite(LED_ALARM, HIGH);
    digitalWrite(ALLARME, HIGH);
    delay(100);
    }
  if (PULS_UP_State == LOW && PULS_DW_State == HIGH && PIENO == HIGH) {
    digitalWrite(LED1,LOW);                                                     //se è pieno e smette di leggere la sonda MAX non faccio nulla
    digitalWrite(LED_ALARM, LOW);
    delay(100);
    }
  if (PULS_UP_State == LOW && PULS_DW_State == LOW && PIENO == LOW)  {
    digitalWrite(LED1, HIGH);                                                   //leggo entrambi gli ingressi. se sono bassi entrambi abilito l'uscita.
    digitalWrite(LED_ALARM, LOW);
    delay(100);
    }
  if (PULS_UP_State == LOW && PULS_DW_State == HIGH && PIENO == LOW) {
    digitalWrite(LED1,HIGH);                                                    //se sta riempiendo e supera il minimo non cambio nulla
    digitalWrite(LED_ALARM, LOW);
    delay(100);
    }
  if (PULS_UP_State == HIGH && PULS_DW_State == HIGH && PIENO == LOW) {
    digitalWrite(LED1,HIGH);                                                    //se sta riempiendo e arriva al MAX dico che è pieno
    digitalWrite(LED_ALARM, LOW);
    int (PIENO = HIGH);
    delay(100);
    }
  if (PULS_UP_State == HIGH && PULS_DW_State == HIGH && PIENO == HIGH)  {
    digitalWrite(LED1, LOW);                                                     //se tutto pieno spengo l'uscita
    digitalWrite(LED_ALARM, LOW);
    delay(100);
    }
    delay(100);
    }
Logged

Pages: 1 2 [3]   Go Up
Jump to: