Привет всем. Я решил объединить эти два проекта. Во-первых, потому что винтовое крепление для ПЭТ-бутылок очень удобно, а во-вторых, потому что мини-вариант идеально подходил мне для небольшого аквариума.
Привет всем. Я позволил себе объединить эти два проекта вместе, во-первых, потому что винтовое соединение для ПЭТ-бутылок удобно, а во-вторых, потому что мини-вариант был для меня подходящим для небольшого аквариума.
https://www.thingiverse.com/thing:2761061 https://www.thingiverse.com/thing:3729421
Я также модифицировал программную часть, добавив датчик освещенности. Внутренний таймер Arduino не является стабильным без модуля RTC, поэтому я подключил датчик освещенности рядом с лампой. Когда лампа включается, она активирует таймер Arduino на 10 минут, а затем подает корм для рыб. Счетчик проверяет, происходит ли это только
Я также модифицировал программную часть, добавив датчик яркости. Внутренний таймер Arduino не является постоянным без модуля RTC, поэтому я подключил датчик яркости возле лампы. Когда он включается, он активирует таймер Arduino на 10 минут, а затем кормит рыб. Счетчик проверяет, происходит ли это только один раз в день до наступления
// МИНИ-КОРМЛИК ДЛЯ РЫБ ОТ FAU.
// Загружено в Mini Fish Feeder 29 марта 2020 года во время карантина из-за COVID-19.
// Окончательная и активная версия.
// Только одна ежедневная активация, вызванная включением или выключением лампы.
// Примерно через 10 минут после включения запускается подача корма.
Включить.
Сервопривод myservo;
Количество терминов: count_of_terms = 0;
int count_of_doses = 2; // Количество доз.
Интегральный показатель положения подающего механизма = 82; // положение загрузки из резервуара - режим ожидания.
int ser_pos_fishtank = 25; // положение слива в аквариуме - подача питания.
Индекс позиции = 0;
int mangiato = 0; // контроль ежедневного кормления.
int ledverde = 4; // съеден
int ledrosso = 5; // ещё не съеден.
int x = 0 ; // счетчик цикла ожидания.
void setup() {
Serial.begin(9600);
pinMode(ledverde,OUTPUT);
pinMode(ledrosso,OUTPUT);
digitalWrite(ledrosso,HIGH); // ещё не съеден
digitalWrite(ledverde, LOW);
)
void loop() {
int sensorValue = analogRead(A0); //Чтение показаний датчика освещенности, показывающих, включен ли свет или нет.
Serial.println(значение датчика);
Serial.println(mangiato);
Задержка (1000);
если((значение датчика >= 600) и (mangiato == 0)) {
Serial.println("ATTESA, время пробуждения примерно 10 минут");
для (x = 0 ; x < 600; x++){
digitalWrite (ledrosso, HIGH); // включает красный светодиод и заставляет его мигать.
Задержка (500);
Serial.println(x);
digitalWrite (ledrosso, LOW);
Задержка (500);
)
run_feeder();
)
если (значение датчика <= 100) {
mangiato=0;
digitalWrite(ledrosso,HIGH);
digitalWrite(ledverde, LOW);
)
)
void Should_I_feed_them(String timestring){
для (int i = 0; i < количество_терминов; i++) {
Если (mangiato == 0) {
Serial.println("------ ---------- ------");
Serial.println("------ Начало цикла ------");
run_feeder();
)
)
)
void run_feeder(){
myservo.attach(9);
Счетчик int = 0;
для (счетчик; счетчик < количество доз; счетчик++) {
для (pos = ser_pos_feeder; pos >= ser_pos_fishtank ; pos -= 1) {
myservo.write(pos);
)
Задержка (500);
для (pos = ser_pos_fishtank; pos <= ser_pos_feeder; pos += 1) {
myservo.write(pos); }
Задержка (500);
Serial.print(counter);
Serial.println("------ Он ест ------");
)
mangiato = 1;
digitalWrite(ledrosso, LOW);
digitalWrite(ledverde,HIGH);
myservo.detach();
)
Настройки печати.
Сплавные плоты:
Нет.
Поддерживает:
Нет.
Резолюция:
0,2
Заполнение:
30%
Филамент: Не знаю Petg.Аззурро.
Примечания:
// МИНИ-КОРМЛИК ДЛЯ РЫБ ОТ FAU.
// Загружено в Mini Fish Feeder 29 марта 2020 года во время карантина из-за COVID-19.
// Окончательная и активная версия.
// Только одна ежедневная активация, вызванная включением или выключением лампы.
// Примерно через 10 минут после включения запускается подача корма.
Включить.
Сервопривод myservo;
Количество терминов: count_of_terms = 0;
int count_of_doses = 2; // Количество доз.
Интегральный показатель положения подающего механизма = 82; // положение загрузки из резервуара - режим ожидания.
int ser_pos_fishtank = 25; // положение слива в аквариуме - подача питания.
Индекс позиции = 0;
int mangiato = 0; // контроль ежедневного кормления.
int ledverde = 4; // съеден
int ledrosso = 5; // ещё не съеден.
int x = 0 ; // счетчик цикла ожидания.
void setup() {
Serial.begin(9600);
pinMode(ledverde,OUTPUT);
pinMode(ledrosso,OUTPUT);
digitalWrite(ledrosso,HIGH); // ещё не съеден
digitalWrite(ledverde, LOW);
)
void loop() {
int sensorValue = analogRead(A0); //Чтение показаний датчика освещенности, показывающих, включен ли свет или нет.
Serial.println(значение датчика);
Serial.println(mangiato);
Задержка (1000);
если((значение датчика >= 600) и (mangiato == 0)) {
Serial.println("ATTESA, время пробуждения примерно 10 минут");
для (x = 0 ; x < 600; x++){
digitalWrite (ledrosso, HIGH); // включает красный светодиод и заставляет его мигать.
Задержка (500);
Serial.println(x);
digitalWrite (ledrosso, LOW);
Задержка (500);
)
run_feeder();
)
если (значение датчика <= 100) {
mangiato=0;
digitalWrite(ledrosso,HIGH);
digitalWrite(ledverde, LOW);
)
)
void Should_I_feed_them(String timestring){
для (int i = 0; i < количество_терминов; i++) {
Если (mangiato == 0) {
Serial.println("------ ---------- ------");
Serial.println("------ Начало цикла ------");
run_feeder();
)
)
)
void run_feeder(){
myservo.attach(9);
Счетчик int = 0;
для (счетчик; счетчик < количество доз; счетчик++) {
для (pos = ser_pos_feeder; pos >= ser_pos_fishtank ; pos -= 1) {
myservo.write(pos);
)
Задержка (500);
для (pos = ser_pos_fishtank; pos <= ser_pos_feeder; pos += 1) {
myservo.write(pos); }
Задержка (500);
Serial.print(counter);
Serial.println("------ Он ест ------");
)
mangiato = 1;
digitalWrite(ledrosso, LOW);
digitalWrite(ledverde,HIGH);
myservo.detach();
)
Source du modèle
