Pages: [1]   Go Down
Author Topic: leggere il valore di un'uscita?  (Read 403 times)
0 Members and 1 Guest are viewing this topic.
Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 953
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

è possibile leggere il valore di una uscita dell'arduino? per esempio io in una parte di programma precedente imposto questa uscita a 1 o a 0 e poi leggere se questa uscita è a 1 o a 0, non so se mi sono spiegato bene, in poche parole io vorrei leggere il valore di un output...
potrei salvare il valore dell'uscita su una variabile e leggere quella, ma mi risulta un po' complicato visto il programma smiley-sweat c'è per caso un modo più semplice?
grazie!
Logged

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Forse non ho capito la domanda..
Ma è un'uscita, sei tù che la imposti e quindi sai sempre se è 1 o 0 no?
Logged

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

Certo che si può. Basta leggere il corrispondente bit sul registro della porta del micro:
http://www.arduino.cc/en/Reference/PortManipulation
Logged


Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma potrei capire se si trattasse di un entrata, ma un'uscita...
Logged

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 953
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

eh infatti immaginavo che bastasse leggere il registro della porta, come sui pic... grazie Leo! smiley-wink

Quote
Ma è un'uscita, sei tù che la imposti e quindi sai sempre se è 1 o 0 no?
si vero, ma il problema è che se ho un programma un po' complesso, poi è più difficile sapere con esattezza se l'ultima volta era stata impostata a 0 o a 1, non so se mi spiego smiley-sweat...
Logged

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

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

Ma potrei capire se si trattasse di un entrata, ma un'uscita...
Boh, forse vuole solo salvarsi lo stato delle uscite per ripristinarle in un secondo momento. Cmq è vero, è poco logico essendo lo stato di un'uscita impostata via software  smiley-sweat
Logged


Marche
Offline Offline
Edison Member
*
Karma: 33
Posts: 2261
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Potresti farti un array, dove su ogni elemento ci vai a mettere una variabile che rappresenta lo stato delle uscite; ogni volta che il tuo programma modifica lo stato delle uscite gli fai anche aggiornare l'array.
A questo punto basta leggere l'array per sapere lo stato delle uscite in qualsiasi momento.
Ciao 
Logged

Camisano Vicentino (VI), Italy
Offline Offline
God Member
*****
Karma: 5
Posts: 953
ƎR like no other.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok per convincervi vi spiego proprio il problema... smiley
allora ho un robot con 4 ruote omnidirezionali e 4 motori dc (del quale ho già postato una foto la settimana scorsa), il mio problema è che è molto veloce e se voglio farlo fermare non mi basta spegnergli i motori perchè con l'inerzia va avanti per altri 20 cm, quindi per fermarlo gli do una piccola tensione sui motori inversa a quella a cui erano sottoposti prima e così si blocca sul punto in cui gli ho detto di fermarsi, ok? smiley

si anch'io avevo pensato all'array ma tanto vale che leggo i valori quando che servono, non capita molto spesso che debba arrestarsi al robot smiley-wink
Logged

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3240
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

digitalRead(numporta); garantito 100%
che sia impostata come input o output, oppure dai registri
Logged

no comment

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5483
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

digitalRead(numporta); garantito 100%
che sia impostata come input o output, oppure dai registri
Si tanto alla fine legge i registri smiley
Code:
int digitalRead(uint8_t pin)
{
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);

if (port == NOT_A_PIN) return LOW;

// If the pin that support PWM output, we need to turn it off
// before getting a digital reading.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);

if (*portInputRegister(port) & bit) return HIGH;
return LOW;
}
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3240
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Si tanto alla fine legge i registri smiley
anche digitalWrite alla fine scrive sui registri  smiley-grin
Logged

no comment

Pages: [1]   Go Up
Jump to: