je suis tout nouveau ici et malheureusement grandement débutant dans cet univers de l'Arduino et de la programmation en général.
Je créé ce nouveau sujet car je bosse pour la boite de nuit tenu par 2 potes qui m'ont filé un défi un peu particulier : créer un photobooth fonctionnant avec un monnayeur ainsi qu'en parallèle un bouton poussoir lorsque les soirées sont privatisées.
Je viens donc vers vous car malgré des heures passées à étudier le sujet celui-ci reste totalement incompréhensible pour moi.
Je bloque sur la programmation pure et dure c'est à dire que dans le cahier des charges le resultat doit etre comme cela :
_ le client insère des pièces jusqu'à la somme de 4€ ou appui sur le bouton poussoir (les 2 manières doivent etre fonctionnelles en parallèle)
_ une fois la somme reçu par le monnayeur ou le bouton enclenché, une simulation d'appui de touche (touche F du clavier par exemple) doit etre effectué afin que le logiciel lance sa séquence qui dure environ 1minute
_ pendant cette minute l'arduino doit alimenter un des fils du monnayeur afin que celui-ci refuse toute nouvelle pièce
Toute la partie logiciel/photographie est prete, il ne me manque plus que la partie monnayeur. (Ce dernier est programmé pour envoyer 1 impulsion pour une pièce de 10ct, 2 impulsions pour 20cts, 5 impulsions pour 50cts, 10 imp pour 1€ et 20 imp pour 2€)
J'ai essayé de charger des codes que j'ai trouvé mais ceux ci ne passent meme pas la vérification dans Guenuino. (et ne répondrait meme pas à mon besoin quoiqu'il arrive)
Je sais que ce n'est pas un sujet facile mais je ne trouve aucune aide pour de gros débutant à ce sujet.
J'espere que vous accepterez de m'aider de n'importe quelle manière et que cela n'est pas insurmontable !
Oui je l'avais vu mais de ce cas le monnayeur n'a pas le même role, car pour ma situation il faut que l'arduino compte jusqu'à la bonne somme (4€).
Une fois que les 4€ sont la, il faut qu'il envoie une commande a un autre arduino qui traduira le signal par une simulation de keyboard.
Dans les faits c'est super simple, mais je suis totalement perdu dans cet univers de codage
hello
suis pas d'accord avec toi. je n'ai pas détaillé mais:
il me semble bien que tu dois étalonner ton monnayeur en 1er
puis lorsqu'il reçoit une pièce, il t'envoie un code correspondant à la somme
à toi dans ton prg de traiter la réception du message du monnayeur.
regardes le 2 eme code d'exemple, tu y trouveras :
Choose some love based on the amount your client has paid. By using the
// modulo on the NUM constants, we ensure that we never request a string
// with a number higher than we have provided.
if (cashola > 0 && cashola < 5) cheapStrings();
else if (cashola >= 5 && cashola < 10) valueStrings(stringSelect % NUM_V);
else if (cashola >= 10 && cashola <25) qualityStrings(stringSelect % NUM_Q);
else if (cashola >= 25) luxuryStrings(stringSelect % NUM_L);
cashola = 0; // Reset our received cash amount.
il n'y a pas à dire, il va falloir que tu te tapes la doc
Alors toute la partie programmation du monnayeur est faite.
J'ai réussi à trouver un code qui traduit les "Pulse" (impulsions => piece de 2€=4 pulses) et ca fonctionne, le moniteur série m'énumère les pièces que je met dans le monnayeur mais sans les compter.
Maintenant je suis à l'étape où les 4€ ont été insérés. Le Arduino doit donc : _ déjà réussir à compter jusqu'à 4€ (1€+1€+1€+1€ par exemple) _ arrivé dans une valeur entre 4€ et 6€ il doit envoyer un courant (de 1 ou 3volts) pendant 1minute via une des pin (pour activer l'inhibiteur du monnayeur, qui n'acceptera plus de pièce le temps de la séance photo) _ envoyer une commande à l'autre arduino qui simule l'appui sur une touche de clavier
Toute la partie simulation de clavier je l'ai faite, ca doit fonctionner mais je crois que mon Leonardo non officiel est complètement HS (il s'active lorsque je rapproche ma main par exemple....)
pourquoi utilises tu 2 platines arduino, la UNO ne te suffit pas?
tu gères le monnayeur, une fois que tu as tes 4 euros, le prog ne peut 'il pas gérer ce que tu demandes à la Léonardo?
Bonsoir
Comme il a déjà un leonardo , je pense qu'il est plus simple de l'utiliser à la fois pour la gestion du monnayeur et l'emulation du clavier par HID USB.
Je pense meme que ce projet pourrais tenir sur un simple digispark à 2€ (comptage et emulation clavier)
oui, je suppose que c'est le code ascii, une arduino sait le faire par prog pas besoin d'un clavier.
une fois les 4 euros encaissés, un HIGH sur une broche pour neutraliser le monnayeur et le code ascii de 'F' sur TX de la liaison série consacrée. lequel est relié à l'entrée série du "système photo"
dfgh:
oui, je suppose que c'est le code ascii, une arduino sait le faire par prog pas besoin d'un clavier.
une fois les 4 euros encaissés, un HIGH sur une broche pour neutraliser le monnayeur et le code ascii de 'F' sur TX de la liaison série consacrée. lequel est relié à l'entrée série du "système photo"
Oui ,mais il faut que ce soit reconnu/vu comme un appui de touche "F" sur clavier du PC par le logiciel de photo
A partir d'arduino (ou approchant) , il n'y a pas 36 solutions
utiliser un arduino pouvant faire nativement en USB de l'HID KEYBOARD (Leonardo, digispark, et autres)
utiliser un PC ayant encore du connecteur clavier "PS2" (de + en + rare)
utiliser sur le PC un emulateur de clavier "Serial to Keyboard" , solution simple avec un uno par exemple ( je n'ai testé que sous windows)
Il y a surement d'autres "options"
Si je devais faire avec le materiel dont dispose déjà Sawyer et de ce que j'ai compris , je partirais simplement sur un leonardo seul
Alors oui effectivement l'utilisation de la touche "F" est pour le logiciel photo (DSLRbooth) qui reconnaîtra cet appui comme le lancement de la séance photo.
Vous pensez qu'un simple Leonardo peut suffir pour ces 3 fonctions ?
analyse et comptage des pulses du monnayeur
envoie du HIGH au monnayeur pour l’inhibition
envoi de la touche "F" via le HID Keyboard
Depuis ce matin mon Uno sait compter en tout cas !
Par contre j'ai une question un peu autre. Pourquoi lorsque je viens de taper ou copier/coller mon code dans une nouvelle "fenêtre" celui-ci n'a aucune erreur, et lorsque je l'enregistre et que j'essaye de le vérifier à nouveau j'ai l'erreur que vous verrez dans l'image ?
Non c'est vraiment qu'à partir du moment où j'enregistre le projet qu'il me fait apparaître l'erreur.
Alors qu'avant l'enregistrement il n'y a aucun soucis lors des verifs et téléversements.
J'ai bien sur essayé de mettre dans un nouveau projet, même résultat !
Bonjour , je pense qu il faudrait le code complet pour voir ou vous avez positionné vos declarations de variables dans un premier temps , ca ne doit pas etre bien mechant .
Sawyer:
Par contre j'ai une question un peu autre. Pourquoi lorsque je viens de taper ou copier/coller mon code dans une nouvelle "fenêtre" celui-ci n'a aucune erreur, et lorsque je l'enregistre et que j'essaye de le vérifier à nouveau j'ai l'erreur que vous verrez dans l'image ?
Bonjour,
J'ai déjà eu ce type de problème.
Normalement en C++ la fonction doit être déclarée avant d'être utilisée.
Avec l'IDE arduino, c'est inutile car celui ci fait cette déclaration à ta place. Mais quelquefois, va savoir pourquoi, ça ne fonctionne pas correctement.
J'ai résolu ce problème en ajoutant une déclaration explicite de la fonction.
Merci beaucoup Kamill c'était bien ca, je n'ai plus de problème après enregistrement désormais
J'ai bien avancé, toute la partie monnayeur est codée !
Il sait analyser les pièces, arduino les comptes et une fois à 4€ ou plus, il envoie pendant 15 sec une inhibition au monnayeur qui n'encaisse plus rien. Au bout de ces 15 sec le crédit total se réinitialise.
Il ne me reste plus que la simulation de la touche à faire et ca sera compilé et partagé avec vous si cela vous intéresse !
Sawyer:
...
Vous pensez qu'un simple Leonardo peut suffir pour ces 3 fonctions ?
analyse et comptage des pulses du monnayeur
envoie du HIGH au monnayeur pour l’inhibition
envoi de la touche "F" via le HID Keyboard
Bonsoir
perso je pense que oui , tes 2 premier points ne necessite pas beaucoup de ressources MCU.
le seul point "dur" eventuel que je vois sur ton projet c'est que tu ne dispose pas d'une vraie info "cycle photo terminée OK"
tu travaille en boucle ouverte , mis ça n'est peut etre pas du tout un probleme
pour le point que tu soulèves, j'ai mis un delay, qui au bout de 1 minute relâche l'inhibiteur du monnayeur.
J'ai mis une minute car la boucle du logiciel photo (prise de 4 photos + montage + imprime + retour à l'écran "insérerez crédit") dure un peu moins d'une minute.