Pages: 1 [2]   Go Down
Author Topic: Leggere chiusura contatto 15 volte ogni due secondi  (Read 1768 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 294
L'uomo non smette di giocare perché invecchia, ma invecchia perché smette di giocare. (George Bernard Shaw)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rieccomi, ho fatto un po' di prove... Ho modificato il codice postato sopra da @PaoloP ma non sono riuscito ad ottenere quello che volevo...
Volevo, girando la solita rotella del telefono, dare una funzione ad ogni numero... se so che il numero uno si chiude per un tot di tempo, gli faccio fare una cosa.. e così via...
Il codice è il seguente:
Code:
// this constant won't change:
const int buttonPin = 8; // the pin that the pushbutton is attached to
const int ledPin = 12; // the pin that the LED is attached to

// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
unsigned long t1, t2 = 0;
int durata = 0;
int intervallo=0;
int pippo=0;
void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize the LED as an output:
pinMode(ledPin, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
}


void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);

// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
t2=millis();
durata=t2 - t1;
Serial.print(durata);
}
else {
t1 = millis();
intervallo= t1 - t2;
Serial.print(" : ");
Serial.println(intervallo);
}
if (durata >5000)
{
pippo++;
}
if (pippo =1)
{
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
}
}
// save the current state as the last state,
//for next time through the loop

}
Mi riuscite a dare una mano? Come posso fare? Esempi? Ancora grazie! :D
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Correggi if(pippo==1)
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Sr. Member
****
Karma: 0
Posts: 294
L'uomo non smette di giocare perché invecchia, ma invecchia perché smette di giocare. (George Bernard Shaw)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Correggi if(pippo==1)
Grazie!! Cavolo, l'ho letto proprio stasera che = è un errore... '-.- ma non ci ho pensato...

Code:
void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      t2=millis();
      durata=t2 - t1;
      Serial.print(durata);
    }
    else {
      t1 = millis();
      intervallo= t1 - t2;
      Serial.print(" : ");
      Serial.println(intervallo);
    }

}if (durata >0)
{
pippo++;
}
if (pippo ==1)
{
  digitalWrite(ledPin, HIGH);
      delay(100);
      digitalWrite(ledPin, LOW);
      delay(100);
}
  // save the current state as the last state,
  //for next time through the loop

}
Dovevo spostare anche la posizione del gruppo di if di pippo smiley-grin Con un po' di lucidità ci torno a lavorare smiley-grin
Ancora grazie!!! smiley-wink
Logged


Offline Offline
Sr. Member
****
Karma: 0
Posts: 294
L'uomo non smette di giocare perché invecchia, ma invecchia perché smette di giocare. (George Bernard Shaw)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pensavo... (strano, ma penso anch'io!! xD ) se io ci metto tot tempo a digitare il 3 un'altra persona ci può mettere meno tempo come ce ne può mettere di più... e mò che faccio? dev'essere adatta a tutti!!! Stavo pensando di crearmi un sistema tutto mio...
In pratica, dietro la rotella, c'è un disco che gira... su questo disco c'è un pezzo di plastica rialzato... su quel pezzo di plastica rialzato ci metto un filo e tutt'intorno ci metto degli altri fili... quando i fili intorno alla rotella, toccano il pezzo di plastica ricoperto dal filo, farà come se fosse un pulsante...
Avete dei consigli? Perchè calcolando il tempo è una cosa impossibile da fare... tutte le volte dovrei gareggiare con la rotella... Dovrei impiegare sempre lo stesso tempo per fare un determinato numero...
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 114
Posts: 7188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Maggio, controlla tutti i connettori della rotella perché una coppia dovrebbe chiudersi mentre la rotella ruota e restare aperta quando la rotella è ferma, o viceversa.
Serviva per distinguere le cifre, ovvero per sapere quando si inviava un 2 o un doppio 1.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Sr. Member
****
Karma: 0
Posts: 294
L'uomo non smette di giocare perché invecchia, ma invecchia perché smette di giocare. (George Bernard Shaw)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Le sto pensando tutte... ma non ci arrivo... allora... a rotella ferma, il contatto che conta gli impulsi è chiuso... poi ci sono degli altri contatti che (credo) sono quelli che lasciano attaccata la "campana" e quando si comincia a girare, si aprono e il centrale di quei contatti si chiude con un altro... non so se mi sono spiegato... il mio problema è che con arduino non riesco a leggere quei contatti che si aprono e si chiudono quando giro la rotella.. si aprono e si chiudono moooolto velocemente!!!
Logged


Pages: 1 [2]   Go Up
Jump to: