Pages: [1] 2   Go Down
Author Topic: pinMode, digitalRead e digitalWrite  (Read 1047 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

buon giorno a tutti,

avrei un dubbio sullo sketch che sto compilando:

Code:
void setup()
{
  lcd.begin(16, 2);

  pinMode(2, INPUT);
  digitalWrite(2,HIGH);
  pinMode(3, INPUT);
  digitalWrite(3,HIGH);
  pinMode(5, OUTPUT);
  //digitalWrite(5, LOW);

}  


void loop()
{
  Boa1 = digitalRead(2);
  Boa2 = digitalRead(3);

  if (Boa1 == HIGH){

    digitalWrite(5,HIGH);
    lcd.setCursor(10,1);
    lcd.print (Boa1);
    lcd.print (Boa2);
  }

  else{

    digitalWrite(5,LOW);
    lcd.setCursor(10,1);
    lcd.print (Boa1);
    lcd.print (Boa2);
  }



l'unico modo per rendere stabile la lettura delle boe (funzionano come un normale pulsante on/off) è impostare i pin 2 e 3 su INPUT e poi HIGH, quindi collegarli al GND; al contrario impostare INPUT e LOW e quindi collegare l'altra estremità ai 5V fa impazzire la lettura: quando è ON è ok, quando è OFF oscilla tra 0 e 1 in continuazione..
Sicuramente sbaglio qualcosa...


Grazie in anticipo
« Last Edit: June 30, 2012, 01:22:29 am by zioTonino » Logged

Offline Offline
Jr. Member
**
Karma: 2
Posts: 98
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quando fa così di solito è perchè manca una resistenza di pull down...io di solito ne metto una da 1 Mohm ma vanno bene anche di più piccole
Logged

Italy
Offline Offline
Full Member
***
Karma: 6
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao zio,
Io non ci ho capito molto, però nello schema fritzing il pin 3 non è collegato, mentre nello sketch lo leggi. Scusa l'ignoranza, cosa sono ste boe? Che stai facendo?
N.
Logged

"The question is not whether intelligent machines can have emotions, but whether machines can be intelligent without any emotions"

Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao superp e grazie per la risposta,

sto realizzando, tramite relè, l'accensione e lo spegnimento di una pompa per l'acquario: sullo schema ho riportato solo i collegamenti di una boa, l'altra, quella collegata al pin 3, segue un collegamento identico (così come per il codice); le boe sono dei comunissimi galleggianti che funzionano come degli interruttori.

Grazie


Logged

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

Mettere un pin in INPUT e poi scriverci HIGH equivale ad attivare la resistenza di pull-up interna.
Poi messo così lo schema non ha molto senso, a che serve la R in serie al pulsante?

Le pull-up si collegano così:
http://arduino.cc/playground/CommonTopics/PullUpDownResistor
E servono per dare un segnale fisso in caso di non pressione
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ah... e come posso collegare in modo corretto?
la resistenza l'ho messa per paura di fare corto (sono un pò a terra con l'elettronica  smiley-cry)
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

impostando i pin 2 e 3 come INPUT, senza l'HIGH, e spostando da GND a 5V ... ho grossi problemi a rilevare la posizione della boa (problemi simili anche se è su GND): se è giù mi dice HIGH, ma se va su, oltre a non accorgersene subito, continua ad oscillare (HIGH/LOW) per almeno 5 secondi...
Logged

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

Ti ho messo un link, l'hai guardato?
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si ... ma non ci ho capito tantissimo smiley

basandomi su un esempio preso dal manualetto ho (sperando di aver fatto una caxxata) così:

Logged

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

Così mi pare vada bene. La resistenza mettila da 10K.
Lo schema è con una pull-down, quindi devi leggere lo stato alto per capire se è stato premuto
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Così mi pare vada bene. La resistenza mettila da 10K.
Lo schema è con una pull-down, quindi devi leggere lo stato alto per capire se è stato premuto

non mi mandare male... ma non capisco cosa sono sti pull-up/down
dalla guida non riesco a capirlo smiley-sad
Logged

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

E' la prima cosa detta nel link che ti ho postato io:
Quote
Pull-up resistors are used in electronic logic circuits to ensure that inputs to the arduino settle at expected logic levels if external devices are disconnected or high-impedance. 'Just because you have nothing at all connected to an input pin doesn't mean it is a logical zero.'
Una pull-DOWN serve a dare un valore BASSO ben preciso al pin quando non premi il pulsante, una pull-UP serve inceve a dare una lettura ALTA a pulsante non attivato. In questo modo hai un segnale a riposo non flottante.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi nella seconda soluzione ho adottato, non sapendolo, una pull-down?
Logged

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

Sì.
In questo modo il controllo devi farlo sul passaggio del pin ad HIGH.
Ora, il tipo di configurazione da adottare dipende dalla risposta che dà ciò che devi collegarci. Se hai un segnale basso, non puoi mettere una pull-down perché avresti LOW in entrambi i casi  smiley-wink
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

come si vede dal secondo schema, ho messo un piedino su 5V quindi quando il contatto è chiuso lui vede HIGH, quando è aperto, grazie al pull-down, vede LOW...

o almeno credo sia così...
Logged

Pages: [1] 2   Go Up
Jump to: