Code switch case avec arduino

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à toutes et tous, je suis un petit nouveau, je ne suis pas spécialiste en programmation mais je teste et je me débrouille mais je dois avouer qu’ici, je rame… Je me permet donc de venir chez vous demander quelques conseils. merci d’avance pour votre aide. Voilà j’ai reçu une machine à café Dolce Gusto basique, le problème est qu’il n’y a pas de timer sur cette machine ce qui veux dire que la quantité d’eau qui est délivrée se fait au pif comme on dit chez nous.j’ai donc modifiée cette machine simplement en placant un relais en parallèle qui court circuite le switch de démarrage le temps nécessaire. j’ai placé un ecran LCD sur lequel j’affiche via un menu principale les 20 sortes de café possible 2 boutons permettent de monter ou descendre dans le menu, un troisieme bouton permet de valider le choix ce qui nous emène dans une première option qui demande de placer le PAD et valider par OK qui est le 4 eme bouton. A partir de là les options suivantes guide suivant qu’il y a 1 ou 2 cartouches suivant le type de café choisis au départ. Bon, j’ai réalisé mon code avec des "delay" qui etaient placé dans des ’Switc case" suivant ce qui avait été choisis (je n’avais pas besoin que le programme fasse autre chose donc voilà pourquoi j’ai choisis delay il pouvait donc être bloquant) cela fonctionne parfaitement j’avais calculé le temps nécessaire pour avoir la quantité d’eau voulue mais lorsque je passe la tempo de Delay à plus de 34500 milisecondes là le relai s’enclenche mais ne se coupe plus jamais on dirait que la tempo est bloquée si je repasse la tempo à 29900 là c’est parfait.Problème donc pour les grands café… J’ai essayé avec "Millis" mais quand je place millis dans mes "switch case" le relai s’enclenche mais ne se coupe plus … Ma question actuelle est peut-on utiliser Millis avec Switch case" si oui comment ? merci beaucoup d’avoir pris le temps de me lire je sais que j’ai été un peu long mais…désolé.

+0 -0

Bonjour :)

Est-ce que tout le code, ou l’extrait de code qui semble poser problème ne serait pas nécessaire en plus du long discour ?

Ce problème avec une valeur supérieur/inférieur à 32767 m’évoque une histoire de taille de variable int alors que long était nécessaire, mais sans certitude.

+1 -0
Auteur du sujet

Bonjour, Si désolé je me suis douté que cela serait nécessaire mais je ne suis pas chez moi actuellement je n’ai donc pas le code sous la main… Merci pour ta réponse rapide en tout cas j’essaye long ce soir et je te tiens au courant si cela ne fonctionne pas je t’envois le code. Merci beaucoup. Bonne journée.

+0 -0

Ce problème avec une valeur supérieur/inférieur à 32767 m’évoque une histoire de taille de variable int alors que long était nécessaire, mais sans certitude.

bendia

Yep, ca sent la valeur mal interprété. Tu utilises une variable ou passe une valeur en dur directement ? Si c’est une variable, déclare là en unsigned long. Si c’est une valeur en dur, essaie de rajouter ul à la fin (par exemple delay(34500ul) pour forcer le compilateur a prendre ca comme un unsigned long)

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+1 -0

Si c’est une variable, déclare là en unsigned long. Si c’est une valeur en dur, essaie de rajouter ul à la fin (par exemple delay(34500ul) pour forcer le compilateur a prendre ca comme un unsigned long)

Eskimon

Merci, je ne connaissais pas ces formatters (je ne sais pas comment on dit en français). J’ai cherché l’explication dans la doc de référence, et c’était pas si simple à trouver, donc, je le pose là : c’est dans Integer Constants :)

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte