Nourrisseur de poisson automatique

Bonjour, j'ai pour sujet pour le bac de créer un nourrisseur de poisson automatique avec quelques contraintes à respecter. Pour ce faire j'ai besoin d'un programme Arduino, mais je ne m'y connais pas vraiment en langage arduino du coup j'aurais besoin d'un peu d'aide.

Il s'agit d'un distributeur " Juwel Easy Feed " Dimensions : 15 x 7 x 7 cm. -Il faut 0 à 3 distributions par jour. -Il faut un arrêt de la filtration 30 min avant la distribution du repas et pendant 1 heure

Il faut que ce soit autonome pour environ 1 mois ou plus ( si par exemple le propriétaire de l'aquarium part en vacances ou autre )

Voilà, si besoin de plus d'informations pour m'aider je vous les donnerais volontier, merci à tous ceux qui pourront m'apporter de l'aide dans ce projet

besoin de plus d’informations pour m’aider

Bonjour,
il faudrait en effet que nous sachions ce que tu as déjà fait ou tenté, et où cela bloque ?

Bonjour désolé du temps de réponse,

Comme dit précédemment je ne m'y connait absolument pas en arduino je n'ai donc encore rien fait, je ne sait pas par où commencer, donc si possible de m'aider la dessus déjà sa serait super sympathique

Bonjour, Tu peux t'aider en te formant : Cours d'Eskimon

Merci Icare, je regarde sa, et revient si je ne trouve pas et n'arrive toujours pas ;)

Il ne faut pas foncer tete bêche dans la programmation..

Tu a très bien énoncé la problématique, toutefois il manque de la réflexion et c'est constamment le cas avec les projets de BAC.

Il faut réfléchir simple.

-Il faut 0 à 3 distributions par jour.

Dans un jour il y a 24h.

Soit 24 * 60 = 1 440 minutes.

Si je divise 1 440 minutes par 3, la fréquence de distribution de nourriture j'obtiens 480 minutes, soit l'intervalle entre chaque distribution.

Il faut un arrêt de la filtration 30 min avant la distribution du repas et pendant 1 heure

Toujours dans une approche simpliste je sais que dans un jour j'ai 1 440 minutes, si je divise par 30 minutes j'obtiens

1 440 / 30 = 48.

Maintenant je peut penser à un système qui génère périodiquement une impulsion toutes les 30 minutes.

Dans une journée j'en aurais 48 et je sais qui faut arrêter la filtration 30min avant la distribution et pendant une heure, soit toutes les 15 impulsions ( 480 - 30 / 30 = 15 ) et rétablir celle ci a la 16éme impulsions (30+30 = 60min).

Voila, en gros l’algorithme que tu devra coder sera peut être un vulgaire compteur d'impulsions.

Bonjour Standby,

Merci de cette réflexion possible, j'ai bien compris le fait de faire 1440/3 donc d'avoir à donné une dose de nourriture toutes les 480 minutes

Or je n'ai pas tout à fait compris le

-Standby: Toujours dans une approche simpliste je sais que dans un jour j'ai 1 440 minutes, si je divise par 30 minutes j'obtiens

1 440 / 30 = 48.

Maintenant je peut penser à un système qui génère périodiquement une impulsion toutes les 30 minutes.

Dans une journée j'en aurais 48 et je sais qui faut arrêter la filtration 30min avant la distribution et pendant une heure, soit toutes les 15 impulsions ( 480 - 30 / 30 = 15 ) et rétablir celle ci a la 16éme impulsions (30+30 = 60min).

Voila, en gros l’algorithme que tu devra coder sera peut être un vulgaire compteur d'impulsions.

Je ne comprend pas bien le fait de faire 1440/30, car au final il n'y auras que trois arrêt et trois reprise de la filtration.

J'avais penser à faire un programme par en gérant des impulsions toutes les X minutes Mais plutôt un programme qui fait arrêter la pompe avec une commande ON/OFF, ainsi que pour gérer la nourriture, le programme ferrait tourner le moteur de X degrés qui permet de faire tomber la dose de nourriture nécessaire, ensuite remettre en position haute ( inverse à la distribution ) et réactiver la pompe, et faire ceci 2 à 3 fois par jours

Sur ce, merci de ton aide encore une fois

Je ne comprend pas bien le fait de faire 1440/30, car au final il n’y auras que trois arrêt et trois reprise de la filtration.

Divisé 1 440 par 30 revient à avoir 48 fois 30 minutes en une journée, c’est une “horloge” qui va envoyer des impulsions toutes les 30 minutes de sorte a ce que tu puisse avoir facilement une notion du temps.

Comme tu la dit il y aura que trois reprises donc je fait 1 440 / 3 = 480 minutes, c’est l’intervalle de temps entre chaque reprise.

'avais penser à faire un programme pas en gérant des impulsions toutes les X minutes
Mais plutôt un programme qui fait arrêter la pompe avec une commande ON/OFF, ainsi que pour gérer la nourriture, le programme ferrait tourner le moteur de X degrés qui permet de faire tomber la dose de nourriture nécessaire, ensuite remettre en position haute ( inverse à la distribution ) et réactiver la pompe, et faire ceci 2 à 3 fois par jours

Tu mélange deux fonctions qui n’ont rien avoir, l’une permet d’alimenter périodiquement les poissons et l’autre de fournir la nourriture.

Je te conseille de faire une analyse fonctionnelle (diagramme pieuvre) de ton futur produit pour mieux le comprendre.

Je crois comprendre un peu mieux ce que tu voulais dire avant avec

-Standby: Divisé 1 440 par 30 revient à avoir 48 fois 30 minutes en une journée, c'est une "horloge" qui va envoyer des impulsions toutes les 30 minutes de sorte a ce que tu puisse avoir facilement une notion de temps.

Comme tu la dit il y aura que trois reprises donc je fait 1 440 / 3 = 480 minutes, c'est l'intervalle de temps entre chaque reprise.

En gros il faudrait envoyé une impulsions chaque 30 minutes, et à la minute 450 ( premier arrêt de la filtration ) faire en sorte que le programme exécute une commande à cet instant précis, et réitérer ceci à la minute 480 pour le nourrissage et à la minute 510 la reprise de la filtration, et ce toute les 480 minutes c'est sa ?

Tu mélange deux fonctions qui n'ont rien avoir, l'une permet d'alimenter périodiquement les poissons et l'autre de fournir la nourriture.

Oui car il faudrait faire un système pour que le nourrisseur revienne en position haute après chaque utilisation toutes les 480 minutes, pour éviter que la nourriture ce déverse en continue Il faut donc aussi gérer quand le faire,

Mais après avec ton système d'impulsions je pense plus facilement réalisable cette réalisation. Le problème c'est qu'a ce niveau, mon niveau de programmation est faible voir inexistant

Merci de ton aide encore une fois

En gros il faudrait envoyé une impulsions chaque 30 minutes, et à la minute 450 ( premier arrêt de la filtration ) faire en sorte que le programme exécute une commande à cet instant précis, et réitérer ceci à la minute 480 pour le nourrissage et à la minute 510 la reprise de la filtration, et ce toute les 480 minutes c'est sa ?

Exactement.

Mais après avec ton système d'impulsions je pense plus facilement réalisable cette réalisation. Le problème c'est qu'a ce niveau, mon niveau de programmation est faible voir inexistant

Justement, c'est l'une des solutions les plus simple à mettre en oeuvre.

Tu a juste a compter des impulsions et effectuer des actions.

Je compte : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 impulsions > Stop Filtration > 16 impulsions > Nourrir les poissons pendant x temps > Ne plus nourrir les poissons > 17 impulsions > Reprise de la filtration & remise du compteur a 0 > ainsi de suite..

Désolé du temps de réponse long,

Je comprends mieux expliquer comme ceci, mais maintenant que j'ai la solution, y aurait-il moyen de m'aider pour faire le programme ?

Merci de votre aide d'avance

J’ai commencer à faire le programme juste pour le timer, je ne sait absolument pas si cela pourrait marcher, serait-il possible de me conseiller ? Merci

#include "Timer.h" // on importe la librairie

Timer t; // on déclare notre timer
int pin = 2; // LED 1
int pin2 = 3; // LED 2
int pin3 = 4;  // gere le moteur
int pin4 = 5; 
int pin5 = 6; 

void setup()
{
 pinMode(pin, OUTPUT); // on pense bien à déclarer le pin comme une sortie
 t.pulse(pin, 450 * 60 * 1000, "Action à effectuer "); // 450 minutes en millisecondes
 t.pulse(pin3, 480 * 60 * 1000, "Action à effectuer "); // 480 minutes en millisecondes
 t.pulse(pin, 510 * 60 * 1000, "Action à effectuer "); // 510 minutes en millisecondes
}
void loop()
{
 t.update(); // on actualise le timer à 0
}

|500x248

t.pulse(pin, 450 * 60 * 1000, "Action à effectuer "); // 450 minutes en millisecondes

Il n'est pas correct de faire 450 * 60 * 1000, ca plantera à coup sur, en effet le compilo ne "voit" que des variable de type "int" (entier signé) et donc les valeurs possible vont de -32767 à +32767.

450 * 60 * 1000 vaut 27 000 000, bien au dela de 32767, ça plantera.

Soit tu écris directement 27 000 000, soit tu écris 450UL * 60UL * 1000UL, ainsi le compilo comprend que le résultat sera un Unsigned Long (entier non signé sur 32 bit, valeur max 4 294 967 296).

Sur une aussi longue durée je ne sais pas si cette solution est convenable.

Sinon il reste la solution hardware, c'est d'utiliser un circuit intégré qui réalise cette fonction.

Le LTC6991 par exemple.

Je test sa Jambe merci de la réponse

-Stanby je ne pense pas qu'on puisse acheté du matériel autres que ce déjà fournis or il n'en est pas fournis

Personne saurait m'aider pour le programme du coup ?

Les fournisseurs comme Farnell ou RS sont agréées par l'éducation nationale, en forçant un peut c'est possible (si ton prof n'est pas une pince..)

Tu peut toujours essayer ma solution avec un bouton poussoir qui simule les impulsions périodique.

J'ai vu avec lui et non on peut pas malheureusement :(

Par contre pour le programme j'ai une problématique que je n'arrive pas à gérer, en gros le propriétaire de l'aquarium vas gérer le nombre de nourrissage, soit 0 soit 1 soit 2 soit 3 par jour Si il choisit 1, alors le programme avec les pulses va devoir s'adapter De même pour les autres choix, comment faire ceci?

C'est une autre partie du programme qu'il faudrait voir plus tard

Bonjour, j'ai de nouvelles problématiques que j'apprends que maintenant

Le cycle horaire n'est pas de 00h00-00h00, mais 9h00-21h00

J'ai pour le moment fait un algorigramme pour m'aider, est-ce que sa va ?