Fisk Feeder (10 / 10 steg)

Steg 10: kodning

Observera här koden är utan underprojekten!

/*
Arduino är ansluten med USB till Raspberry PI
Två program körs
1 Rasberry PI är master
Skicka rader:
-line01: datum
-line02: tid
-line03: vattentemperatur
-line04: när är soluppgången
-line05: när är sundown
-line06: när är tid/manual/av och resultatet av utfodring av fisk 1
-line07: när är tid/manual/av och resultatet av utfodring av fisk 2
-line08: när är tid/manual/av och resultatet av utfodring av fisk 3
-line09: när är tid/manual/av och resukt för utfodring av fisk 4
-line10: tillval
Skicka gånger:
-time01: minuter tills nästa foder
-time02: e minut tills soluppgången
-time03: e minut tills solnedgången
Ta emot:
-resullt av utfodring
-begäran för att skicka linje 01-10

2 Arduino är slave
Skicka & ta emot till Raspberry PI
Pins
-LiquidCrystal (8, 9, 4, 5, 6, 7) & A0
-Softwareserial (10, 11) RX, TX
-ReadingCds (A1, A2, A3, A4, A5)
-Servo 1 (2)
-Servo 2 (3)
-Servo aan/uit (12)
-Ledda aan/uit (13)
Looping 1
Begär & läsa raden 01-10
Begär & läsa tid 01 till 03
Om tid 01 < 1
Visa en nedräkning & foder
Om tid 02 eller 03 < 1
Visa en nedräkning
Dispay aktuell inställning
line01 att line10 1 per sekund
*/

/*
Strömförbrukning
De allmänna strömförbrukning Arduino: 50-60mA
LCD-skärm
Kontrollera USB-port, Arduino endast, Arduino med LCD
lsusb-v|egrep "^ Bus| MaxPower"
Bus 001 enhet 006: ID 1a86:7523 QinHeng elektronik HL-340 USB-seriell adapter
MaxPower 96mA
USB-enheter måste berätta den registeransvarige hur mycket ström de drar
Med hjälp av en multimetern rapporter 23mA
Servo
1 bibliotek: Servo, dröjsmål 10ms, vinkel
När fristående multimetern rapporter 5mA
När fäst multimetern rapporter 150mA
1 bibliotek: Servo, dröjsmål 30ms, vinkel
När fristående multimetern rapporter 5mA
När fäst multimetern rapporter 125mA
2 biblioteket: VarSpeedServo, hastighet 30
När fristående multimetern rapporter 5mA
När fäst multimetern rapporter 150mA
3 bibliotek: Servo, writeMicroseconds
När fristående multimetern rapporter 5mA
När fäst multimetern rapporter 110mA

För servo Observera: håll nere friktionen

Totalt Servo1 Servo2
Arduino 50mA 50mA
LCD-25mA 25mA
Servo1 110mA 5mA
Servo2 5mA 110mA
LED 20mA 20mA
NPN 20mA 20mA
--- + --- +
230mA 230mA
*/

Ställa in Keypas LCD
#include

LiquidCrystal lcd (8, 9, 4, 5, 6, 7);
/*
initiera bibliotek med numrerar av gränssnittet stiften
Arduino: LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
Klon: LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

En anteckning om Pin 10 felet
Bara en sak att nämna, alla råkar ha ett fel i designen, så Använd inte stift 10 när du använder denna sköld. Biblioteket har funktioner för att aktivera och avaktivera bakgrundsbelysningen. Men i design, det finns ett fel, att när stift 10 är inställd till produktionen, och Ställ in hög, kan det orsaka den IO pin av MCU (huvudsakliga Atmel chip) för att leverera för mycket ström (över i databladet högsta betyg) till bakgrundsbelysningen LED. Detta kan orsaka över betonade i MCU och kan minska dess liv, eller kanske även spränga den.
-För att ställa in bakgrundsljus på, ange pin 10 som indata.
-För att ställa in bakgrundsljus, ange pin 10, och omedelbart produktionen låg (aldrig högt!)

Klipp bort pin 10
*/

Ställa in den seriella länken med Raspberry pi
#include
SoftwareSerial mySerial (10, 11); RX, TX
* RX är digital stift 10 (ansluta till TX av annan enhet)
* TX är digital stift 11 (ansluta till RX av annan enhet)

Ställa in servo
#include
Servo servo1; skapa servo1-objekt till control servo feeder
Servo servo2; skapa servo2-objekt för att styra servo hatchh
int servo1_pos = 0; variabel för att lagra den servo1 ståndpunkten
int servo2_pos = 0; variabel för att lagra den servo2 ståndpunkten

Ställa in Led & LDR
int var_blink_led = 0;
Skapa matrisen för A1-A5
int var_A1 [99];
int var_A2 [99];
int var_A3 [99];
int var_A4 [99];
int var_A5 [99];
int led_pos = 0;
int wacht = 100;

void setup() {
-Servo aan/uit (12)
pinMode (12, OUTPUT);
-Ledda aan/uit (13)
pinMode (13, OUTPUT);
}

void servo_on() {
digitalWrite 12, hög. makt på servo
fördröjning (1000); vänta tills kondensatorn är fylld
}

void servo_off() {
digitalWrite 12, låg. strömmen till servo
fördröjning (1000); vänta tills kondensatorn är tom
}

void blink_led() {
bara ett enkelt test när utfodring startar eller stoppar
för (var_blink_led = 0; var_blink_led < 5; var_blink_led += 1) {
digitalWrite 13, hög. Aktivera led
fördröjning (1000);
digitalWrite 13, låg. Inaktivera led
fördröjning (1000);
}
}

void led_on() {
slå på led
digitalWrite 13, hög. Aktivera led
}

void led_off() {
slå på led
digitalWrite 13, låg. Inaktivera led
}

void feeding() {
/*
Normalt är en servo kopplad på setup
void setup() {
myservo.attach(9); tillmäter objektet servo servo på pin 9
}
Servo tar emot kommandon genom program och arbeten att hålla rätt vinkel
I detta program servon körs i några sekunder och håller inaktiv tills nästa kommando
För att hålla strömförbrukningen och buller låg utfodring slingan har ett inbyggt koppla loss en
Fästa och ta loss påverkar effektförbrukning av servo-pin
Det andra steget är att använda den strömkrets som sätter på/av 5V

Placera start | 75% servo position 6:00 1100
Flytta till lastning position / 100% servo läge 7:30 700
Flytta till horisontellt läge - 25% servo position 3:00 1900
Flytta till Tom position / 0% servo läge 1:30 2300
Återgå till startposition | 75% servo position 6:00 1100
*/
för (led_pos = 1; led_pos < = 99; led_pos + = 1) {/ / 1-99 rensa analoga utbud
var_A1 [led_pos] = 0;
var_A2 [led_pos] = 0;
var_A3 [led_pos] = 0;
var_A4 [led_pos] = 0;
var_A5 [led_pos] = 0;
}
servo1.attach(2); tillmäter objektet servo servo på pin 2
Flytta till lastning position
för (servo1_pos = 1100; servo1_pos > = 710; servo1_pos-= 1) {/ / går från 6:00 till 7:30
servo1.writeMicroseconds(servo1_pos); berätta servo gå för att placera i variabel "pos"
Delay(5); Waits 5ms för servo att nå ställning
}
Flytta till horisontellt läge
för (servo1_pos = 710; servo1_pos < = 1900; servo1_pos += 1) {/ / går från 7:30 till 3:00
servo1.writeMicroseconds(servo1_pos); berätta servo gå för att placera i variabel "pos"
Delay(5); Waits 5ms för servo att nå ställning
}
Flytta till Tom position
led_on();
för (servo1_pos = 1900; servo1_pos < = 2290; servo1_pos += 10) {/ / går från 3:00 till 1:30
servo1.writeMicroseconds(servo1_pos); berätta servo gå för att placera i variabel "pos"
Delay(5); ((2300-1900)/10) * 5 = 200ms desceend tid 100-150ms
}
Mäta kvantitet
för (led_pos = 1; led_pos < = 99; led_pos + = 1) {
A1
analogRead(A1); Läs analog ingång A1
Delay(10);
var_A1[led_pos]=analogRead(a1);
A2
analogRead(A2);
Delay(10);
var_A2[led_pos]=analogRead(a2);
A3
analogRead(A3);
Delay(10);
var_A3[led_pos]=analogRead(a3);
A4
analogRead(A4);
Delay(10);
var_A4[led_pos]=analogRead(A4);
A5
analogRead(A5);
Delay(10);
var_A5[led_pos]=analogRead(A5);
}
led_off();
Återgå till startposition
för (servo1_pos = 2290; servo1_pos > = 1100, servo1_pos-= 1) {/ / går från 1:30 till 6:00
servo1.writeMicroseconds(servo1_pos); berätta servo gå för att placera i variabel "pos"
Delay(5); Waits 5ms för servo att nå ställning
}
servo1.detach(); lossnar servo på stift 2 till objektet servo
}

void openhatch() {
/*
Se också ogiltiga utfodring
Placera start stängt | 100% servo position 12:00 2300
Placera slut öppna | 0% servo position 6:00 700
*/
servo2.attach(3); tillmäter objektet servo servo på stift 3
för (servo2_pos = 2290; servo2_pos > = 710; servo2_pos-= 1) {/ / går från 12:00 till 6:00
servo2.writeMicroseconds(servo2_pos); berätta servo gå för att placera i variabel "pos"
Delay(5); Waits 5ms för servo att nå ställning
}
servo2.detach(); lossnar servo på stift 2 till objektet servo
}

void closehatch() {
/*
Se också ogiltiga utfodring
Placera start stängt | 100% servo position 12:00 2300
Placera slut öppna | 0% servo position 6:00 700
*/
servo2.attach(3); tillmäter objektet servo servo på stift 3
för (servo2_pos = 710; servo2_pos < = 2290; servo2_pos += 1) {/ / går från 6:00 till 12:00
servo2.writeMicroseconds(servo2_pos); berätta servo gå för att placera i variabel "pos"
Delay(5); Waits 5ms för servo att nå ställning
}
servo2.detach(); lossnar servo på stift 2 till objektet servo
}

void loop() {
servo_on(); makt på servo
blink_led();
openhatch(); Öppna luckan
blink_led();
Feeding(); vända inmatningsröret
blink_led();
closehatch(); Stäng luckan
blink_led();
servo_off(); strömmen till servo
}

Se Steg
Relaterade Ämnen

Automatisk fisk feeder

När du är i ditt hem och ingen att ta hand om din fisk, kan du lita på hemlagad fisk feeder. Produktionen tar cirka 3 timmar, ca 2 timmar för den mekaniska delen och 1 timme för elektroniken. Också du inte översvämningen din fisk eller lämna dem hung...

Solar Driv LED fisk Feeder

många människor har fiskdammar. Vissa är bara dekorativa och andra är att höja fisk för marknaden eller för att föda familjen.Detta Instructable är att öka produktiviteten i liten skala fiskdammar. Det är riktigt billigt att göra, så jag tror faktisk...

AquaFeeder: En automatiserad fisk Feeder

AquaFeeder är en smart Arduino kontrollerade robot som automatiskt matar din fisk vid en given tidpunkt, av sig själv! Den använder två motorer, en kontroll av akvarium locket, och de andra släppa fiskmat. Det finns också en LCD-skärm som gör det enk...

AquaFeeder 2.0: Automatisk fisk Feeder (med WiFi)

Letar du efter två akvarier är inte ett lätt jobb, särskilt för någon så glömsk som jag. Ibland skulle jag glömma att mata fishies i flera dagar tills min mamma skulle märka flytande fisk skelett. Ja, nuförtiden som aldrig händer, på grund av den nya...

En knapp fisk Feeder

målet med detta Instructable är att skapa en fisk feeder som kommer att mata dina fiskar med en knapptryckning.Fördelarna med detta är att du inte får din hand oljor över fiskmat, och det är super lätt att trycka på en enda knapp varje morgon.Steg 1:...

Enklaste automatiska fisk Feeder

fick ett akvarium, du också älskar din fisk, men du är typ av person som inte gillar att göra något för fisken förutom att titta på dem eller om du faktiskt inte har tid att foder sedan (högst osannolikt) eller du är en vanlig resenär och ofta gå för...

Automatisk fisk Feeder på 20 minuter

detta är en instructable om hur man gör en automatisk fisk feeder (min version fodrar fisken varje sex sekunder för att visa dess arbete men du kan ändra koden för att göra det flöde efter några timmar eller en dag). Hoppas ni gillar det!Länkar till...

Fisk Feeder Sensor Array

IntroduktionVarför detta projektMitt akvarium är en Juwel Rekord 800 och har ett Juwel utfodring maskin. Jag köpte maskinen för att kunna mata min fisk på regelbundna tider när inte jag runt. Det är en stor maskin, men som en ingenjör ser jag lite ut...

Fisk Feeder använda Arduino

Detta instructable skapades enlighet projektetkravet på Makecourse vid University of South Florida (www.makecourse.com)Komponenter som behövs:1 x Arduino Uno R3 styrelse1 x full storlek skärbräda1 x USB-kabel (medföljer Arduino styrelsen)1 x USB-näta...

Enkel automatisk fisk Feeder i Ardinuo

Jag hade tänkt ta en semesterresa med min familj, men ingen se mina fiskar, jag kolla in andra instructablers bestämde sig för att bygga min auto fisk feeder, min enda principen är enkel att göra, spara vatten och spara ström, jag hittade metoden rol...

Automatisk fisk feeder med ljus

Som student jag ville ha något att blomstra upp mitt rum. En liten fisk tank verkade perfekt. Men eftersom jag alltid bort för helgen eller ännu längre perioder under sommarlov, jag skulle inte kunna mata fiskarna, och de förmodligen inte kommer att...

Auto fisk Feeder

hur ofta glömmer du någonsin att mata dina fiskar?Tja, för mig Glöm jag inte så mycket. Jag inte kunde bara gå ut stad för ett par dagar och även vara löjligt om jag ska ta min tank längs.När jag vann en Sparkfun RedBoard från Sparkfun analogi tävlin...

(AT) liten fisk Feeder

i denna tutorial jag ska visa dig hur man gör en automatisk fisk feeder. Detta är vad jag använder för att mata mina husdjur medan jag är borta och det fungerar ganska bra!******************************************************************************...

Arduino fisk Feeder

Har du en fisk hemma? Är du som mig och du ibland glömmer att mata dina vatten kärleksfulla husdjur? Om så är fallet, är detta projekt perfekt för dig. Dess enkla, Billiga och roliga att göra!Detta projekt är perfekt för studenter som lämnar Ekstedt...

Fisk Feeder Arduino Raspberry Pi länk

"Vad en tråkig svart låda"Ja det är, men:– Det matar mina fiskar när inte jag är där.-Den lever vid en fördefinierad tidpunkt.– Det känner av den mat som ges till fisken– Du kan logga in distans till raspberry pi att se status.– Det kan skicka e...

Arduino fisk Feeder Flux kondensator Upcycled från boken

Detta instructable är utformad för att inte bara bygga från mestadels hus-håll träffar en fisk utfodring flux kondensator i en bok som drivs av Arduino, snarare tjänar också ett syfte i att visa att allt är möjligt och att ofta gånger de enklaste sak...

3D tryckta tratt system för mitt akvarium automatisk fisk feeder

Vänligen rösta f för mer 3d tryckta projekt eller idéerSå jag har denna smal fisk tank har att ganska mycket ett mycket begränsat utrymme där maten kan gå utan att ta den 6 fot lång bit glas ut... Min automatiska mataren sprutar bara mat och det mest...

DIY automatisk fisk feeder för kretsloppsodling

har du en aquaponic system? Kan inte vara där de timmar som din fisk måste äta? Stor automatisk fisk matare är ganska dyra. Ta en titt hur jag gjorde mina med 25 euro.Steg 1: konceptet Här är en scketch av hur det fungerar. Jag hittade den här. Det f...

Eazy automatisk fisk Feeder

Leveranser-Fisk mat fall-Servo-Trä-Arduino-Verktyg för att såga i trä-Hoppare ledningar-Drill-Hot lim och trälimSteg 1: Ledningar din krets Koppla din krets till denna bild.Steg 2: Kod (ändra tid till vad du vill)/ * Sopavid BARRAGAN är denna exempel...