Pressione pulsante

Salve ragazzi,
potreste gentilmente scrivermi il codice affinchè un led rimanga accesso sino a quando non viene rilasciata la pressione di un tasto?

Grazie a tutti.

Vincenzo

Ci stai prendendo per il cul*?

Ma veramente per fare quello non servirebbe nemmeno un Arduino...

Scusate, gatta frettolosa -> gattini ciechi!!!

Mi spiego meglio:

  • devo utilizzare una tastiera a 16 caratteri utilizzando la libreria Keypad;
  • alla pressione di un tasto viene fatto girare un motore per tot giri, ma ho difficoltà a farlo girare se non rilasciando e riprmendo il tasto.

PABLOS cosa ti fa pensare che vi stia prendendo per il cul*!!!!

In ogni caso riporto il listato scritto sin qui:

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//corrispondenza simboli sulla tastiera
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad

//variabili relative a velocità e numero di giri

double giri = 200;

//creazione nuovo oggetto Keypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 
  
  
  
void setup()
{
   pinMode (0,OUTPUT); // PIN 0 DIR
   pinMode (1,OUTPUT); // PIN 1 STEP
   pinMode (10,OUTPUT); // PIN 10 DIR
   pinMode (11,OUTPUT); // PIN 11 STEP
   pinMode (12,OUTPUT); // PIN 12 DIR
   pinMode (13,OUTPUT); // PIN 13 STEP
   
    Serial.begin (9600);
}
  
void loop(){
  

  
  char customKey = customKeypad.getKey();
  
 switch (customKey)
 { case '6': xavanti ();
     break;
   case '4': xindietro ();
     break;
   case '2': ysopra ();
     break;
   case '8': ysotto ();
     break;
   case 'A': zsu ();
     break;
   case 'C': zgiu ();
     break;
 }
 
}

//****FUNZIONI ASSI MOTORE*********
void xavanti ()
{
  double vel = (1000+(analogRead(0)/2));
  
  for (int i=0;i<giri;i++)
       {digitalWrite (10,HIGH);  
        digitalWrite(11, HIGH);
        delayMicroseconds(vel);
        digitalWrite(11, LOW); 
        delayMicroseconds(vel);}
      
 
  /*for (int i=0;i<giri;i++)
       {digitalWrite (10,HIGH);  
        digitalWrite(11, HIGH);
        delayMicroseconds(vel);
        digitalWrite(11, LOW); 
        delayMicroseconds(vel);}
        
         Serial.println (vel);*/
         
        }

void xindietro ()
{
  
  double vel = (1000+(analogRead(0)/2));
  
  for (int i=0;i<giri;i++)
       {digitalWrite (10,LOW);  
        digitalWrite(11, HIGH);
        delayMicroseconds(vel);
        digitalWrite(11, LOW); 
        delayMicroseconds(vel);}
}

void ysopra ()
{
  double vel = (1000+(analogRead(0)/2));
  for (int i=0;i<giri;i++)
       {digitalWrite (12,HIGH);  
        digitalWrite(13, HIGH);
        delayMicroseconds(vel);
        digitalWrite(13, LOW); 
        delayMicroseconds(vel);}
}

void ysotto ()
{
  double vel = (1000+(analogRead(0)/2));
  for (int i=0;i<giri;i++)
       {digitalWrite (12,LOW);  
        digitalWrite(13, HIGH);
        delayMicroseconds(vel);
        digitalWrite(13, LOW); 
        delayMicroseconds(vel);}
}

void zsu ()
{
  double vel = (1000+(analogRead(0)/2));
  for (int i=0;i<giri;i++)
       {digitalWrite (0,HIGH);  
        digitalWrite(1, HIGH);
        delayMicroseconds(vel);
        digitalWrite(1, LOW); 
        delayMicroseconds(vel);}
}

void zgiu ()
{
  double vel = (1000+(analogRead(0)/2));
  for (int i=0;i<giri;i++)
       {digitalWrite (0,LOW);  
        digitalWrite(1, HIGH);
        delayMicroseconds(vel);
        digitalWrite(1, LOW); 
        delayMicroseconds(vel);}
}

PABLOS cosa ti fa pensare che vi stia prendendo per il cul*!!!!

  1. Perchè hai fatto 7 domande nel 2013 , 1 nel 2014 e 1 nel 2015 .... e dopo 2 anni di sperimentazioni ci chiedi come accendere un led .... di questo passo nel 2027 riuscirai forse ad accendere 2 led :slight_smile:
  2. se tu avessi seguito il forum avresti capito che nessuno scrive sketch per conto terzi
  3. la tua domanda da come risultati 1.000.000 di risposte su google
  4. senza cercare su google avresti potuto trovarla sul tutorial
  5. non ne hai voglia e vuoi la pappa pronta

Quindi rinnovo la domanda ... ci stai prendendo per il cul*?

Scusa Pablos ma lo sei o lo fai?
Il polemico, e l'analista, lo fai per mestiere o semplicemente ti diverte? Ti pregherei di non prendere in considerazione ne questo ne altri miei futuri post, considerata la tua scarsa disponibilità di fronte a chi non eccelle come te sull'argomento.

Per tutti gli altri utenti, non era mia intenzione andare contro le abitudini del Forum: le ricerche in tal senso ho provato a farle purtroppo con esito negativo. Da principiante sto cercando di capirci qualcosa, ed ho ritenuto che anche farsi scrivere alcune righe di codice possa essere formativo. Se così non è chiedo "umilmente scusa".
Grazie

Ti pregherei di non prendere in considerazione ne questo ne altri miei futuri post

Ma certo ci mancherebbe... rispetto i desideri altrui

Buon lavoro ... la risposta alla tua domanda comunque te l'ho data, ci aggiorniamo nel 2027 :slight_smile:

La risposta, per me, è macchina a stati finiti: http://www.lucadentella.it/2013/04/30/macchina-a-stati-finiti-e-arduino/