Cooling-Masters
Connexion · INSCRIPTION · Site Recevoir à nouveau l'e-mail de validation


[Arduino] Topic à Questions-Réponses

Ajouter ou retirer ce sujet de vos favoris  ·  Suivre ce sujet  ·  Imprimer ce sujet
Pages :  1  2  3  4  5  6 
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     
ImageROSCO !!!!!!
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




     
Pages :  1  2  3  4  5  6