Connexion
·
INSCRIPTION
·
Site
Recevoir à nouveau l'e-mail de validation
Forum Cooling-Masters
>
Electronique
>
Réalisations diverses
[Arduino] Topic à Questions-Réponses
Ajouter ou retirer ce sujet de vos favoris
·
Suivre ce sujet
·
Imprimer ce sujet
Bas de page
Pages :
1
2
3
4
5
6
Page précédente
Page suivante
perecastor
Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091
vendredi 23 août 2013 à 07:14:06
Tout frais de ce matin avec le while qui a change de place, Optique qui a disparu et les Remplissage_ ont perdu la majuscule et le _ :
CODE :
// Machine a distribuer des croquettes pour chat v1.0
// Fonctionnement ultra simple base sur une horloge avec deux alarmes ( une ration pour le matin et une pour le soir)
// A chaque alarme, le retro-eclairage se met en route pour afficher le nom de l alarme puis le cylindre se met a tourner durant 4 secondes
// Des que le tube est remplis de croquettes, le contacteur de niveau envoie le signal pour ouvrir la trape avec le servo
//
//
// By Padrekstor
// All copyrights reserved
// 10/08/2013
// librairies inclues
#include <Servo.h>
#include <TimeAlarms.h>
#include <Time.h>
#include <LiquidCrystal.h>
// #include <Tone.h> desactive pour le moment car soucis avec d autres librairies, sert a generer des notes avec des temps definis
// pour generer une sonneries, on va utiliser des impulsions pwm sur la sortie 6
//declaration des varaibles
Servo servo; // creation de la variable servo ( jusqu'a 9 servo possible)
const int bouton = 8; // capteur optique de detection des croquettes dans le tube
const int moteur = 9; // moteur du reservoir a croquettes
const int lcdlum = 10; // retro-eclairage du lcd
int buttonState = 0; // valeur par defaut de l etat du contacteur de niveau de croquettes
int pos = 178; // valeur de la variable par defaut de la position servo
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // configuration du pin du lcd
int remplissageOK = 0;
int remplissageDone = 0;
//int Optique = digitalRead(bouton);
// configuration des entres sorties, des alarmes et de la date et de son affichage sur le lcd
void setup()
{
servo.attach(7); // on attache le servo a la sortie pwm 7
pinMode(bouton, INPUT); // configuration de bouton en entree
pinMode(moteur, OUTPUT); // configuration de moteur en sortie
pinMode(lcdlum, OUTPUT); // configuration de lcdlum en sortie
setTime(19,37,0,22,8,13); // configuration de la date heure/minutes/secondes/mois/jours/annee (a 4 digits ex. 2013)
Alarm.alarmRepeat(7,30,0,alarme); // alarme de matin
Alarm.alarmRepeat(19,40,0,alarme); // alarme du soir
lcd.begin(16,2); // initialisation du lcd (16 caracteres sur 2 lignes)
servo.write(178); // servo en position ferme
}
// configuration de l alarme
void alarme()
{
digitalWrite(lcdlum, HIGH); // allume l eclairage du lcd
lcd.setCursor(0, 1); // place le curseur sur la deuxieme ligne
lcd.print(" a table !!!!"); // parce qu on est poli aussi avec les chats
delay (500); // attente de 500 millis
tone(6, 960, 500); // on genre un signal sonre sur le pin 6 de 960 hertz
lcd.setCursor(0, 1); // place le curseur sur la deuxieme ligne
lcd.print(" "); // efface la deuxieme ligne
remplissageOK = 0;
remplissageDone = 0;
buttonState = digitalRead(bouton);
if ( buttonState == HIGH )
{
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print("Tube plein ! ");
delay(2000);
// Ouverture du tube
servo.write(90);
delay(500); // Tempo pour laisser les croquettes tomber
// Fermeture du tube
servo.write(178);
delay(500); // Tempo pour laisser le temps de se fermer
// On met fin à la Boucle
remplissageOK = 1;
remplissageDone = 1;
}
else {
// La Boucle continue
remplissageOK = 0;
remplissageDone = 0;
lcd.setCursor(0, 1); // place le curseur sur la deuxieme ligne
lcd.print(" encore un tour! "); // parce qu on est poli aussi avec les chats
}
// ACTION DE FIN
if ( remplissageDone == 1 )
{
tone(6, 880, 500); // genere une frequence de 880 hertz de 500 millis sur le pin 6
delay(500); // attente 500 millis
tone(6, 440, 500); // genere une frequence de 440 hertz de 500 millis sur le pin 6
delay(500); // attente 500 millis
tone(6, 880, 500); // genere une frequence de 880 hertz de 500 millis sur le pin 6
delay(500);
lcd.setCursor(0, 1); // place le curseur sur la deuxieme ligne
lcd.print(" bon appetit!"); // parce qu on est poli aussi avec les chats
delay (500);
lcd.setCursor(0, 1);
lcd.print(" "); // efface la deuxieme ligne
digitalWrite(lcdlum, LOW); // eteind l eclairage du lcd
}
// Début du remplissage du tube
while ( remplissageOK == 0)
{
// On fait tourner le réservoir
digitalWrite(moteur, HIGH);
delay(3000); // 3 secondes par remplissage ( A ajuster )
// Arrêt du moteur pour contrôler le niveau de croquettes
digitalWrite(moteur, LOW);
delay(1000); // Tempo pour laisser les croquettes tomber
}
}
// configuration de l affichage de l heure sur le lcd en premiere ligne
void affichagelcd()
{
lcd.setCursor(0, 0);
lcd.print(hour());
lcd.setCursor(2, 0);
lcd.print(":");
lcd.setCursor(3, 0);
lcd.print(minute());
lcd.setCursor(5, 0);
lcd.print(":");
lcd.setCursor(6, 0);
lcd.print(second());
lcd.setCursor(11, 0);
lcd.print(day());
lcd.setCursor(13, 0);
lcd.print("/");
lcd.setCursor(14, 0);
lcd.print(month());
}
// programme principal
void loop()
{
affichagelcd();
Alarm.delay(1000);
}
Google
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
vendredi 23 août 2013 à 10:37:34
vous avez la même carte ?
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
vendredi 23 août 2013 à 10:40:56
QUOTE (perecastor) :
Tout frais de ce matin avec le while qui a change de place, Optique qui a disparu et les Remplissage_ ont perdu la majuscule et le _ :
CODE :
// Machine a distribuer des croquettes pour chat v1.0
// Fonctionnement ultra simple base sur une horloge avec deux alarmes ( une ration pour le matin et une pour le soir)
// A chaque alarme, le retro-eclairage se met en route pour afficher le nom de l alarme puis le cylindre se met a tourner durant 4 secondes
// Des que le tube est remplis de croquettes, le contacteur de niveau envoie le signal pour ouvrir la trape avec le servo
//
//
// By Padrekstor
// All copyrights reserved
// 10/08/2013
// librairies inclues
#include <Servo.h>
#include <TimeAlarms.h>
#include <Time.h>
#include <LiquidCrystal.h>
// #include <Tone.h> desactive pour le moment car soucis avec d autres librairies, sert a generer des notes avec des temps definis
// pour generer une sonneries, on va utiliser des impulsions pwm sur la sortie 6
//declaration des varaibles
Servo servo; // creation de la variable servo ( jusqu'a 9 servo possible)
const int bouton = 8; // capteur optique de detection des croquettes dans le tube
const int moteur = 9; // moteur du reservoir a croquettes
const int lcdlum = 10; // retro-eclairage du lcd
int buttonState = 0; // valeur par defaut de l etat du contacteur de niveau de croquettes
int pos = 178; // valeur de la variable par defaut de la position servo
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // configuration du pin du lcd
int remplissageOK = 0;
int remplissageDone = 0;
//int Optique = digitalRead(bouton);
// configuration des entres sorties, des alarmes et de la date et de son affichage sur le lcd
void setup()
{
servo.attach(7); // on attache le servo a la sortie pwm 7
pinMode(bouton, INPUT); // configuration de bouton en entree
pinMode(moteur, OUTPUT); // configuration de moteur en sortie
pinMode(lcdlum, OUTPUT); // configuration de lcdlum en sortie
setTime(19,37,0,22,8,13); // configuration de la date heure/minutes/secondes/mois/jours/annee (a 4 digits ex. 2013)
Alarm.alarmRepeat(7,30,0,alarme); // alarme de matin
Alarm.alarmRepeat(19,40,0,alarme); // alarme du soir
lcd.begin(16,2); // initialisation du lcd (16 caracteres sur 2 lignes)
servo.write(178); // servo en position ferme
}
// configuration de l alarme
void alarme()
{
digitalWrite(lcdlum, HIGH); // allume l eclairage du lcd
lcd.setCursor(0, 1); // place le curseur sur la deuxieme ligne
lcd.print(" a table !!!!"); // parce qu on est poli aussi avec les chats
delay (500); // attente de 500 millis
tone(6, 960, 500); // on genre un signal sonre sur le pin 6 de 960 hertz
lcd.setCursor(0, 1); // place le curseur sur la deuxieme ligne
lcd.print(" "); // efface la deuxieme ligne
remplissageOK = 0;
remplissageDone = 0;
buttonState = digitalRead(bouton);
if ( buttonState == HIGH )
{
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print("Tube plein ! ");
delay(2000);
// Ouverture du tube
servo.write(90);
delay(500); // Tempo pour laisser les croquettes tomber
// Fermeture du tube
servo.write(178);
delay(500); // Tempo pour laisser le temps de se fermer
// On met fin à la Boucle
remplissageOK = 1;
remplissageDone = 1;
}
else {
// La Boucle continue
remplissageOK = 0;
remplissageDone = 0;
lcd.setCursor(0, 1); // place le curseur sur la deuxieme ligne
lcd.print(" encore un tour! "); // parce qu on est poli aussi avec les chats
}
// ACTION DE FIN
if ( remplissageDone == 1 )
{
tone(6, 880, 500); // genere une frequence de 880 hertz de 500 millis sur le pin 6
delay(500); // attente 500 millis
tone(6, 440, 500); // genere une frequence de 440 hertz de 500 millis sur le pin 6
delay(500); // attente 500 millis
tone(6, 880, 500); // genere une frequence de 880 hertz de 500 millis sur le pin 6
delay(500);
lcd.setCursor(0, 1); // place le curseur sur la deuxieme ligne
lcd.print(" bon appetit!"); // parce qu on est poli aussi avec les chats
delay (500);
lcd.setCursor(0, 1);
lcd.print(" "); // efface la deuxieme ligne
digitalWrite(lcdlum, LOW); // eteind l eclairage du lcd
}
// Début du remplissage du tube
while ( remplissageOK == 0)
{
// On fait tourner le réservoir
digitalWrite(moteur, HIGH);
delay(3000); // 3 secondes par remplissage ( A ajuster )
// Arrêt du moteur pour contrôler le niveau de croquettes
digitalWrite(moteur, LOW);
delay(1000); // Tempo pour laisser les croquettes tomber
}
}
// configuration de l affichage de l heure sur le lcd en premiere ligne
void affichagelcd()
{
lcd.setCursor(0, 0);
lcd.print(hour());
lcd.setCursor(2, 0);
lcd.print(":");
lcd.setCursor(3, 0);
lcd.print(minute());
lcd.setCursor(5, 0);
lcd.print(":");
lcd.setCursor(6, 0);
lcd.print(second());
lcd.setCursor(11, 0);
lcd.print(day());
lcd.setCursor(13, 0);
lcd.print("/");
lcd.setCursor(14, 0);
lcd.print(month());
}
// programme principal
void loop()
{
affichagelcd();
Alarm.delay(1000);
}
jamais tu dors ?
et ça marche ?
edit: je comprends toujours pas le while
Message édité par
moyen_moins
le vendredi 23 août 2013 à 10:50:40
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
vendredi 23 août 2013 à 10:42:43
ROSCO !!!!!!
Avec la balise Code, ça serait bien qu'il y ait des numéros de lignes qui s'affichent
OrOoX
AFK ? Késako ? :D
Messages : 9889
vendredi 23 août 2013 à 11:46:36
Le code actuel ne risque pas de marcher, il n'y a plus que l'allumage et l'extinction du moteur dans le while,
autant dire que l'arduino ne sortira jamais de la boucle et que on va encore entendre Perecastor sortir :
NNNnNnNOoOoNNnNN ARRRRrrRREEeEEETtTte !
La vérification du capteur doit rester dans le While sans quoi il n'y auras pas d'actualisation des valeurs ...
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
vendredi 23 août 2013 à 11:53:46
Je suis pas fou alors
perecastor
Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091
vendredi 23 août 2013 à 12:55:33
QUOTE (moyen_moins) :
jamais tu dors ?
et ça marche ?
edit: je comprends toujours pas le while
Lol j etais debout a 06h15 ce matin
Crise d asthme!
Sinon bin j ai pas encore tester car je suis en train de faire la gamelle d eau ( percer 2 trous pour y insérer les 2 tubes et coller le tout a la résine epoxy).
On verra ce soir mais apparemment ça marchera pas
.
La j avoue que j ai fait ca pour m occuper ce matin
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
vendredi 23 août 2013 à 13:08:15
Ah ouais, pas de bol.
Sinon, je ne pense pas que ça marchera
kissagogo27
Méchant Vieux Râleur
Messages : 28148
vendredi 23 août 2013 à 16:02:16
j'en connais d'autres qui ont des soucis de boucles while
http://forums.futura-sciences.com/electron...un-arduino.html
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
vendredi 23 août 2013 à 16:17:59
Sinon, switch/case et un de tes cas te donne la condition pour sortir de la boucle ?
OrOoX
AFK ? Késako ? :D
Messages : 9889
vendredi 23 août 2013 à 20:31:07
Perecastor serait t-il en train de faire la course aux croquettes ou alors il nettoie l’inondation ?
perecastor
Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091
vendredi 23 août 2013 à 22:09:42
Nop rien de tout ça ^^
J ai un soucis de distribution
Quand le cylindre est full, le moulin a un peu de mal a tourner.
Il va falloir que je mette une équerre de plus pour relever le tout.Et je dois me pencher sur la capteur ou du moins du régulateur de tension que j ai mis derrière qui doit chauffer ou mauvaise soudure.
Et pour l eau, l epoxy n' a pas encore fini de polymériser.
Message édité par
perecastor
le vendredi 23 août 2013 à 22:10:51
OrOoX
AFK ? Késako ? :D
Messages : 9889
vendredi 23 août 2013 à 23:48:43
Et côté code ça donne quoi ? ^^
perecastor
Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091
samedi 24 août 2013 à 05:18:12
QUOTE (OrOoX) :
Et côté code ça donne quoi ? ^^
J ai pas trop touché au code hier en fait.....
Et ce week end je pense que ca sera pareil.
Une petite pause s impose pour mieux réfléchir lol.
ps: rebelotte, crise d asthme! il va falloir que trouve le moyen de produire de la ventoline car j en ai plus
Message édité par
perecastor
le samedi 24 août 2013 à 05:18:26
kissagogo27
Méchant Vieux Râleur
Messages : 28148
samedi 24 août 2013 à 10:44:45
bon sinon un moteur de lave glace et hop
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
dimanche 25 août 2013 à 02:01:45
Bon, j'ai récup un bon motoréducteur et une bonne alim à découpage. Me reste que le shield pour faire ça propre et si je galère trop, servo 14kg.cm et l'arduino va se débrouiller.
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
lundi 26 août 2013 à 14:16:26
QUOTE (perecastor) :
J ai pas trop touché au code hier en fait.....
Et ce week end je pense que ca sera pareil.
Une petite pause s impose pour mieux réfléchir lol.
ps: rebelotte, crise d asthme! il va falloir que trouve le moyen de produire de la ventoline car j en ai plus
Tiens pour la détection du niveau d'eau
http://soulysolar.mudventions.com/?p=681
Tiens, encore un :
http://www.instructables.com/id/Building-a...d-Sensor/#intro
Bon, là, j'arrête :
http://www.zbasic.net/forum/about1562.html...0909&pc_t=48525
ça confirme la faisabilité du truc au dessus
edit: bon en fait, c'est déjà tout prêt sur ebay on dirait...
http://www.ebay.com/itm/Water-level-sensor...o-/261272258768
Message édité par
moyen_moins
le lundi 26 août 2013 à 15:04:38
kissagogo27
Méchant Vieux Râleur
Messages : 28148
lundi 26 août 2013 à 17:48:28
faut juste éviter d'utiliser du cuivre comme électrodes, mm si c'est du ~ , on ne sait jamais ^^
perecastor
Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091
lundi 26 août 2013 à 18:22:20
Le capteur que tu as troué sur la bay, je pense que tu dois le mettre dans la flotte et pas a l extérieur comme ton premier exemple et j ai pas trop envie d envoyer du 5v dans l eau du chat.
Et je dois l avouer, je vais me pencher sur cette solution. Par contre je vais devoir trouver un réservoir pour l eau un peu plus rigide et qui supporte un peu plus les dépression. ( avec la gravité, l eau descend et exerce une force de succion qui déforme les bouteilles)
Message édité par
perecastor
le lundi 26 août 2013 à 18:23:21
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
lundi 26 août 2013 à 19:40:10
ah oui, on dirait que le "capteur" envoie du 5V dans l'eau mais sous faible courant...
kissagogo27
Méchant Vieux Râleur
Messages : 28148
lundi 26 août 2013 à 19:48:40
normalement si c'est un capteur capacitif, l'eau verra de l'alternatif ^^ donc no soucis ^^ sinon bonjour l'électrolyse
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
lundi 26 août 2013 à 19:55:21
Sinon, il y a des capteurs TOR
edit: mais ça a l'air gros.
Message édité par
moyen_moins
le lundi 26 août 2013 à 19:56:54
moyen_moins
aka metalazzo | Anti²Bug
Messages : 10216
lundi 26 août 2013 à 19:59:46
Sinon, le machin à bandes, ça renvoie un signal analogique.
J'suis sûr que le machin, ça fait bêtement varier une résistance
perecastor
Modérateur-faker/Portuguais des iles/父 亲河&a
Messages : 15091
mardi 27 août 2013 à 04:31:14
QUOTE (kissagogo27) :
normalement si c'est un capteur capacitif, l'eau verra de l'alternatif ^^ donc no soucis ^^ sinon bonjour l'électrolyse
Encore une fois, c est pour l eau du chat! Je vais pas aller lui mettre du jus dans son eau !
Le principe des deux bouts de feuille d alu a l extérieurr du réservoir est tout simplement tip top !
kissagogo27
Méchant Vieux Râleur
Messages : 28148
mardi 27 août 2013 à 07:44:03
j'espère que tu lui donne de l'eau de source des montagnes ^^ sinon le docu en 2nd partie de soirée ce soir va te faire frémir
Google
Haut de page
Pages :
1
2
3
4
5
6
Page précédente
Page suivante
Forum Cooling-Masters
>
Electronique
>
Réalisations diverses
Page générée en 0.038 secondes