Je commence tout juste dans l'arduino. J'ai réussi grâce à des tutos de la communauté à créer 2 sketchs de commande en hexa : une commande On et une commande Off pour un contrôleur.
Je souhaiterai utiliser un interrupteur à clef pour lancer soit la commande Off, soit la commande On et je ne parviens pas à trouver un tuto à ce sujet. J'en viens à me demander si c'est possible ...
il faut statuer sur le modèle d’interrupteur a clef ,
avec un lien (net) ,
a partir de la , voir a quel type d' interrupteur simple on peu l' assimiler.(schémas câblage)
voir exemple botton arduino ide...
puis en fonction de se que vous lui demandez intégrer dans votre programme existant
les lignes conditionnelle(if) déterminant telle ou telle action.
ensuite si vous partez sur un anti rebond programme (=! de matériel) il vous faudra déterminer le délai nécessaire...
Que l’interrupteur soit à clé ou pas à clé ne demande pas de tuto particulier.
La clé c'est juste pour que seules les personnes qui ont la clé puissent manœuvrer l’interrupteur.
Ce qu'il faut connaître c'est ce qu'il fait.
Combien de contacts ?
Au repos les contacts sont t-il ouverts ou fermés ?
Il y en a t-il d'ouverts et d'autres fermés ?
S'agit t-il de contacts simples ou de contacts à deux positions, on parle alors d'inverseur.
Une fois activé les contacts sont-il éphémères (dès qu'on relache ils retrouvent leur position de repos) ou permanents et pour les faire retrouver leur position de repos il faut tourner la clé ?
Donc oui un lien cliquable (utiliser l’icône en forme de chaîne) vers le matériel est indspensable.
Autre point indispensable : lire les tuto d'Eskimon autant pour débuter la programmation que pour connaître le matériel, les interrupteurs sont bien évidement traités.
Tu peux les trouver soit directement (Qwant, gogole, etc) soit en suivant le lien "Zeste de savoir" accessible à partir du message épinglé "Règles du Forum Francophone" qui donne aussi des conseils et qu'il faut lire.
Merci beaucoup pour votre aide et sincèrement désolé pour la réponse tardive mais je ne me souvenais plus du tout sur quel forum et avec quel nom d'utilisateur j'avais écrit ce message !
Pour répondre à la principale question posée, voici le type d'interrupteur que j'ai :
La led ne s'allume pas, par contre la résistance chauffe beaucoup quand je bascule l'interrupteur dans le sens horaire ( j'ai mesuré la tension à 4v) et s'arrête de chauffer dans le sens inverse : plutôt encourageant ...
En fait je viens de m’apercevoir que j'ai utilisé une résistance de 220 ohms ... J'en déduis que j'ai du niquer la led ?
Pas grave, j'apprends ! En tout cas mon contact on/off se fait bien, c'est ce que je voulais avant tout.
Maintenant plus qu'à envoyer les conditions.
Edit : dans ma situation, je n'ai pas besoin de résistance si c'est pour envoyer un code ?
Et pour le sketch, si je comprends bien : si pin 2 (high) alors commande off sinon commande on. C 'est ça ?
// constants won't change. They're used here to set pin numbers:
const int buttonPin = 3; // the number of the pushbutton pin
#define ENABLE 10 // for read
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
// Baud transmission speed
Serial.begin(9600);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
// initialize the pin 10 as output
pinMode(ENABLE, OUTPUT);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
digitalWrite(ENABLE, LOW); //power down signal
delay(50);
uint8_t cmdOff_1[9] = {0x16, 0x00, etc ...}; //motor off
Serial.write(cmdOff_1, 9);
delay(50);
uint8_t cmdOff_2[9] = {0x16, 0x00, etc ...}; //light off
Serial.write(cmdOff_2, 9);
delay(50);
} else {
digitalWrite(ENABLE, HIGH); //power up signal
delay(50);
uint8_t cmdOn_1[9] = {0x16, 0x01, etc ...}; //motor on
Serial.write(cmdOn_1, 9);
uint8_t cmdOn_2[9] = {0x00, 0x01, etc ...}; //light on
Serial.write(cmdOn_2, 9);
uint8_t read_on[16] = {0x08, 0x4c, et ...}; //read
Serial.write(read_on, 16);
delay(1000);
}
}