Arduino aangedreven Lucky Cat als fysieke Webteller is (3 / 3 stap)

Stap 3: De katten Firmware


ik een afbeelding gebruikt als teller op mijn website die wordt geladen vanuit de arduino die als een webserver werkt. Zijn verbonden met het internet via dyndns. Wanneer het gif op de webpagina wordt geladen door de client, de arduino merkt dit en begint tellen en verwerking en werken en knipperen en spullen zoals welk.
Deze tellingen worden weergegeven op de display. Voor de bewegingen van de arm is er een andere teller zodat meerdere armbewegingen verwerkt worden kunnen onafhankelijk van de werkelijke website-hits. Dat komt omdat de arm zwaait een tijdje na te zijn aangereden door de servo.
De arduino controles het licht zodat bij nacht, de servo niet zal werken maar de RGB LED verandert zijn kleur everytime een hit op de website gebeurt (dit deel gebeurt onverwijld een)

Hier is de code:

/*
Webserver

Webserver luistert naar het web en beweegt een servo
LightSensor controleert het licht zodat de servo niet verplaatsen wanneer het is donker
Een 7 segment display werkt met behulp van schuifregisters te tonen van een teller

*/

#include < SPI.h >
#include < Ethernet.h >
#include < Servo.h >

Voer een MAC-adres en het IP-adres voor uw controller hieronder.
Het IP-adres zal afhankelijk van uw lokale netwerk zijn:
byte mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip [] = {192, 168, 178, 188};

voor cijfers:
int latchPin = 2; //muss noch angeschlossen werden
int clockPin = 4;
int dataPin = 3;
int yellowPin = 16;
int redPin = 18;
int bluePin = 17;
int greenPin = 19;
int btnPin = 7;

kleuren
int rood;
int groen;
int blauw;
int geel op;
int ydir; richting van gele vervagen

getal is de matrix voor nummers 192 voor 0, 249 voor 1,... 255 voor niets en 191 voor-
byte cijfers [] = {192, 249, 164, 176, 153, 146, 130, 248, 128, 144, 255, 191, 225, 163, 171, 198, 167, 123};

int dig1;
int dig2;
int getal;
int licht;

lichtsensor:
int lightPin = 1; //light sensor

Initialiseren van de Ethernet server bibliotheek
met het IP-adres en de poort die u wilt gebruiken
(poort 80 is de standaardwaarde voor HTTP):
EthernetServer server(80);
Servo myservo; servo-object om te bepalen van de servo maken
int count = 0;

tijd
unsigned long previousMillis = 0;
unsigned long currentMil = 0;
unsigned long previousMil = 0;
niet-ondertekende lange mil = 0;

Boole timepassed = waar;

VOID Setup
{
myservo.attach(6); hecht de servo op pin 6
de Ethernet-verbinding en de server starten:
Ethernet.begin (mac, ip);
server.begin();

pinMode (latchPin, OUTPUT);
pinMode (clockPin, OUTPUT);
pinMode (dataPin, OUTPUT);
pinMode (yellowPin, OUTPUT);
pinMode (redPin, OUTPUT);
pinMode (greenPin, OUTPUT);
pinMode (bluePin, OUTPUT);
pinMode (btnPin, INPUT); //switch
Serial.begin(9600);
digitalWrite (latchPin, laag);
shiftOut (dataPin, clockPin, MSBFIRST, cijfers [11]); //ones
shiftOut (dataPin, clockPin, MSBFIRST, cijfers [11]); //tens
digitalWrite (latchPin, hoge);
aantal = 0;
rood = 0;
Groen = 0;
blauw = 0;
geel = 250;
ydir = 1;
analogWrite (yellowPin, gele);
analogWrite (redPin, rood);
analogWrite (greenPin, groene);
analogWrite (bluePin, blauw);
myservo.write(0);

Serial.Print ("server is op");
Serial.println(Ethernet.localIP());

}

void loop
{
randomSeed(analogRead(A0)); Geel willekeurige
geel = willekeurige (111, 256);
Yellow = Geel + (1 * ydir); soort vervagen
Als (gele == 255) ydir = -1;
Als (gele 110 ==) ydir = 1;
Serial.println(Yellow);
analogWrite (yellowPin, geel), //Eyes op

luisteren voor clients voor inkomende
EthernetClient client = server.available();
Als (client) {}
een http-verzoek eindigt met een lege regel
Boole currentLineIsBlank = waar;
terwijl (client.connected()) {}
Als (client.available()) {}
char c = client.read();
Als u toegang hebt verkregen tot het einde van de regel (ontvangen een newline
teken) en de regel is leeg, de http-aanvraag is beëindigd,
zodat u kunt een antwoord sturen
Als (c == '\n' & & currentLineIsBlank) {}
verzenden van een standaard http-antwoordheader
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: text/html");
client.println();

count = count + 1; //there was een verzoek

number = number + 1; //Counter
SevenSegDis (); //Display
Als (nummer 99 ==) {//so de 100 ontbreekt :(maar wie kan het iets schelen
digitalWrite (yellowPin, hoge); niet nodig meer omdat yellowPin is analogWrite de hele tijd
aantal = 0;
}

breken;
}
Als (c == '\n') {}
je begint een nieuwe regel
currentLineIsBlank = true;
}
anders als (c! = '\r') {}
je hebt gekregen een teken op de huidige regel
currentLineIsBlank = false;
}
}
}
de web browser tijd geven om te ontvangen van de gegevens
delay(1);
de verbinding sluiten:
client.stop();

randomSeed(analogRead(A0));
rood = random(256);
randomSeed(analogRead(A0));
groen = random(256);
randomSeed(analogRead(A0));
blauw = random(256);

Serial.Print ("Servo:");
Serial.println(myservo.Read());
Serial.Print ("Timepassed:");
Serial.println(timepassed);
Serial.Print ("Count:");
Serial.println(Count);
Serial.Print ("aantal:");
Serial.println(Number);
Serial.Print ("Mil:");
Serial.println(Mil);
Serial.Print ("Licht:");
Serial.println(Light);
Serial.Print ("rode:");
Serial.println(Red);
Serial.Print ("groene:");
Serial.println(Green);
Serial.Print ("blauw:");
Serial.println(Blue);

}

lightsens(); het licht wordt gecontroleerd
time(); / / controleert de tijd



Als (licht < 99 & & timepassed == true & & telling > 0) {//so wanneer haar donker de servo niet werkt en
myservo.attach (6), //attaches Servo naar Pin6 opnieuw
Als (myservo.read() == 0) {}
myservo.write(180); arm omhoog
timepassed = false;
Count = aantal -1;
}
else if (myservo.read() == 180) {}
myservo.write (0); //arm neer
timepassed = false;
Count = aantal -1;
}
delay(1000);
myservo.Detach (); //detaches Servo
Zet de lichten van als servo wordt uitgevoerd
analogWrite (redPin, 0);
analogWrite (greenPin, 0);
analogWrite (bluePin, 0);
}
anders als (licht > = 99 & & telling > 0) {//so wanneer haar donker het licht met elke hit op de website verandert
analogWrite (redPin, rood);
analogWrite (greenPin, groene);
analogWrite (bluePin, blauw);
Count = aantal-1;
timepassed = false;
}

Als (digitalRead(btnPin) == HIGH) {//check als knop is ingedrukt
randomSeed(analogRead(A0));
rood = random(256);
randomSeed(analogRead(A0));
groen = random(256);
randomSeed(analogRead(A0));
blauw = random(256);

analogWrite (redPin, rood);
analogWrite (greenPin, groene);
analogWrite (bluePin, blauw);
}


}

---Deel twee: zeven segmenten weergeven

VOID SevenSegDis() {//controls display met twee shift registers
nummer = (aantal, 0, 99) beperken; //number > = 0 en < 99 vanwege bereik weergeven
Als (aantal < 10) {}
Dig1 = 10; ziet u niets
Dig2 = nummer; degenen
digitalWrite (latchPin, laag);
shiftOut (dataPin, clockPin, MSBFIRST, cijfers [dig2]); //ones
shiftOut (dataPin, clockPin, MSBFIRST, cijfers [dig1]); //tens hier
digitalWrite (latchPin, hoge);
}
else {}
Dig1 = nummer/10; / / eerste cijfer tientallen
Dig2 = nummer - dig1 * 10; tweede cijfer degenen
digitalWrite (latchPin, laag);
shiftOut (dataPin, clockPin, MSBFIRST, digit[dig2]);
shiftOut (dataPin, clockPin, MSBFIRST, digit[dig1]);
digitalWrite (latchPin, hoge);
}
}

---Deel drie: de lichtsensor deel

ongeldig lightsens() {}
licht = analogRead(lightPin);
licht / = 10;

}

---Deel vier: de tijd thingy

VOID tijd () {}
currentMil = millis();
Als (currentMil < previousMil) {/ / als millis doorloopt
Mil += 34359738 - previousMil + currentMil;
}
else {/ / als millis heeft niet vliegen
Mil += currentMil - previousMil;
Als (mil > 25000) {//if 20 sec. doorgegeven
timepassed = true, //resets de timepassed op true voor de servo
Mil = mil-25000;
}
previousMil = currentMil;
}
}

Gerelateerde Artikelen

Automatische Arduino aangedreven Pet Feeder

Automatische Arduino aangedreven Pet Feeder

Dit is mijn automatische pet feeder. Aangedreven door arduino, met behulp van een 3D afgedrukt auger en programmeerbare met twee keer vervoederen een gebruiker instellen hoeveelheid voedsel, met een batterij back-up interne klok.Mijn katten drijven m
CO2 Laser Water Flow Monitor - Arduino aangedreven / Windows Controlled

CO2 Laser Water Flow Monitor - Arduino aangedreven / Windows Controlled

CO2 Laser Water Flow Monitor- en AlarmAangedreven door een Arduino en gereguleerde door aangepaste software op een Windows PCOm het verlengen van de levensduur van een CO2 -laser-buis is het noodzakelijk aan pomp koelwater doorheen actief is. Als de
Acryl Fish Tank met Arduino aangedreven Feeder

Acryl Fish Tank met Arduino aangedreven Feeder

Heb je ooit wilde een meer handen op gevoel bij het ophalen van een vis? Of wilde iets anders dan de gemiddelde aquaria gevonden in de winkels? Dit aquarium is volledig aangepast en afgestemd op uw grootte kan worden gewijzigd en heeft een Arduino aa
Fischertechnik Lucky Cat

Fischertechnik Lucky Cat

het maken van een model van gelukkige kat met behulp van fischertechnik elementen!Ik speel met verschillende educatieve manipulatives voor een levende. (Bezoek www.weirdrichard.com). Door de jaren heen heb ik verschillende thema modellen met behulp v
How To Draw: Lucky Cat

How To Draw: Lucky Cat

Today's tutorial is hoe teken je een gelukkige kat. In Japan, zie je ze in iedere winkel, de reden is goed om geluk te brengen aan de eigenaar met zakelijke, leven etc. Deze schattige calicoes bestaan al sinds de 19de eeuw en glimlach bij iedereen si
Arduino aangedreven raket geleidingssysteem

Arduino aangedreven raket geleidingssysteem

dit is mijn eerste Instructable dus geduld met mij.Dit is een Arduino aangedreven raket geleidingssysteem. Ik heb dit voor de Google Global Science Fair. Mijn project van de wetenschap is op https://sites.google.com/site/arduinorocket/ . Het kostte m
Arduino aangedreven temperatuursensor met LCD Output eerste tijd auteur vermelding

Arduino aangedreven temperatuursensor met LCD Output eerste tijd auteur vermelding

Nooit geweest een kinda man van de wedstrijd, maar ik ging vooruit en ingevuld aan de eerste wedstrijd voor de auteur van de tijd, als u graag mijn intructable of zelfs alleen maar geleerd iets nieuws en denk ik heb verdiend uw stemming doe! =]Hallo
Arduino-aangedreven A-10 stok grip externe w/Emergency Party Button!

Arduino-aangedreven A-10 stok grip externe w/Emergency Party Button!

ik Plama2002 de "Emergency Party Button" bouwen een tijdje terug kwam en wilde iets gelijkaardig voor mijn bar. Ik had ook een oude USAF B-8 stok greep uit een A-10A die ik in mijn vorige leven opgepikt. Ik dacht dat in plaats van gewoon een ges
Maken van een Arduino aangedreven gordijn automatisering

Maken van een Arduino aangedreven gordijn automatisering

In deze video ik aan de slag op het toont u hoe te maken van een Arduino aangedreven apparaat dat zal openen en sluiten van gordijnen!Met behulp van een touw en een continue rotatie servo ben ik kundig voor wekken een katrol systeem dat als de backbo
Arduino aangedreven Verwarmde Glove Liners

Arduino aangedreven Verwarmde Glove Liners

Arduino aangedreven Verwarmde handschoenenDit project is over hoe te maken van de's werelds slimste verwarmde handschoen liners voor extreem koude omstandigheden zoals die in Minnesota of mensen die beschikken over Raynaud van syndrome(like me). Deze
Het BlokClok-Concept - Arduino aangedreven RGB abstracte klok

Het BlokClok-Concept - Arduino aangedreven RGB abstracte klok

Arduino aangedreven klok concept. Uniek concept met behulp van een 8 x 8 RGB-Dot Matrix-scherm. De tijd wordt aangegeven met behulp van blokken van kleur. Het centrale 6 x 6 raster is verdeeld in 4 x (3 x 3) rasters en elk blok van 3 x 3 is een ander
NESBot: Arduino aangedreven Robot gewonnen van Super Mario Bros voor de NES

NESBot: Arduino aangedreven Robot gewonnen van Super Mario Bros voor de NES

deze gids zal u door de stappen voor het bouwen van een robot spelen NES nemen.U moet:Een Arduino Duemilanove (andere platen zal waarschijnlijk werken, maar u moet de stappen voor uw apparaat aanpassen)Werkende NES ConsoleSuper Mario Bros. (Opmerking
Arduino aangedreven RC tank

Arduino aangedreven RC tank

dit is mijn eerste instructable dus neem aub met mij. Mijn naam is Stanley Deakins en ik heb gespeeld met elektronica al geruime tijd, al was het jaren geleden. Ik heb die passie weer op te rakelen vanwege mijn recente werk. Ik heb mijn handen op enk
Het engste, arduino aangedreven, knipperen en schreeuwen halloween pompoen!

Het engste, arduino aangedreven, knipperen en schreeuwen halloween pompoen!

Hier is een instructable een middag project dat net gedaan moest worden: een knipperend, schreeuwen, arduino aangedreven halloween pompoen. Het is een erg leuk, een klein beetje van het solderen omvat en is geweldig voor het leren over sensoren en li