Arduino baserad leksak för barn (4 / 6 steg)

Steg 4: Arudino kod



Nedan är min Arduino kod för detta projekt.

#include "pitches.h" / / innehåller anteckningar refereras i denna kod.

int tonepin = 3; att spela musikaliska toner
int loadpin = 9;
int clockpin = 7.
int SOpin = 8.

osignerade långa idle_time;

byte registerContent = 0;
byte registerContent2 = 0;
lång loWord; tidigare var ett heltal
int bitContent = 0;
lång idle_millseconds = 0;

PIN ansluten till spärren stift (ST_CP) 74HC595
CONST int latchPin_595 = 10; tidigare 10
PIN ansluten till klockan stift (SH_CP) 74HC595
CONST int clockPin_595 = 12; tidigare 12
PIN ansluten till Data i (DS) av 74HC595
CONST int dataPin_595 = 11; tidigare 11
int bitToSet; bit på 595 SKIFT register att ställa

int button_Switch1 = 2;

int melodi [] = {
NOTE_C4, NOTE_G3, NOTE_E7, NOTE_A3, NOTE_G3, NOTE_A4, NOTE_D8, NOTE_B6};

#define white_button 8
#define yellow_button 32
#define blue_button 1
#define red_button 2
#define green_button 16

#define red_led 0 / / bitars för att skriva på 595 register
#define white_led 4
#define blue_led 1
#define green_led 2
#define yellow_led 3

lång joy1_up = 32768;
lång joy1_down = 2048;
lång joy1_left = 8192;
lång joy1_right = 512;

lång joy2_up = 4096;
lång joy2_down = 1024;
lång joy2_left = 16384;
lång joy2_right = 256;

Ogiltiga inställningar)
{
pinMode (loadpin, produktionen);
pinMode (clockpin, produktionen);
pinMode (SOpin, indata);

ställa in stift att produktionen eftersom de behandlas i de viktigaste loopen
pinMode (latchPin_595, produktionen);
pinMode (dataPin_595, produktionen);
pinMode (clockPin_595, produktionen);

pinMode (button_Switch1, ingång); 5 knappen växlar med lysdioder

digitalWrite (loadpin, låg);
digitalWrite (clockpin, hög);
digitalWrite (button_Switch1, låg);

led_check(1); tänds lysdioderna och spela en enda ton... Random

Serial.BEGIN(9600);

idle_time=Millis();
}

Ogiltig loop)
{
för (int idx = 0; idx < 16; idx ++)
{
om (idx == 0)
{
pulseload();
}
bitContent = digitalRead (SOpin);

om (bitContent == 1 & & idx < 8)
{
bitWrite(registerContent,idx,1);
}
annat if (bitContent == 1 & & idx > = 8)
{
bitWrite (registerContent2, idx-8,1);
}
annat if (bitContent == 0 & & idx < 8)
{
bitWrite (registerContent, idx, 0);
}
annat if (bitContent == 0 & & idx > = 8)
{
bitWrite (registerContent2, idx-8,0);
}

pulseclock();
}
slutet av klockcykel för 2 SKIFT register.

loWord = ord (registerContent, registerContent2); konvertera två byte i ett ord
Serial.Print ("Output värde:");
Serial.println(loWord,dec); skriva ut ordet som ett decimaltal

Switch(loWord) {
fall 36864:
Serial.println ("båda upp");
bitToSet = red_led;
registerWrite (bitToSet, hög);
Playtone(2);
bryta;
fall 3072:
Serial.println ("båda ned");
bitToSet = green_led;
registerWrite (bitToSet, hög);
Playtone(2);
bryta;
fall 24576:
Serial.println ("båda vänster");
bitToSet = white_led;
registerWrite (bitToSet, hög);
Playtone(2);
bryta;
fall 768:
Serial.println ("båda rätt").
bitToSet = blue_led;
registerWrite (bitToSet, hög);
Playtone(2);
bryta;
mål 8:
Serial.println ("vita knappen");
bitToSet = white_led;
registerWrite (bitToSet, hög);
Playtone(1);
bryta;
fall 32:
Serial.println ("gula knappen");
bitToSet = yellow_led;
registerWrite (bitToSet, hög);
Playtone(1);
bryta;
fall 1:
Serial.println ("blå knapp");
bitToSet = blue_led;
registerWrite (bitToSet, hög);
Playtone(1);
bryta;
fall 2:
Serial.println ("röd knapp");
bitToSet = red_led;
registerWrite (bitToSet, hög);
Playtone(1);
bryta;
fall 16:
Serial.println ("gröna knappen");
bitToSet = green_led;
registerWrite (bitToSet, hög);
Playtone(1);
bryta;

standard:
ingenting skjutet eller okänt sekvens
för (int thisPin = 0; thisPin < 16; thisPin ++) {
registerWrite (thisPin, låg);
}
registerContent = 0;
registerContent2 = 0;

} / / end fall / växla

fånga in aktuell tid

check_idle_time(); Kolla inaktivitet tid

Serial.Print ("registrera 1:");
Serial.println (registerContent, BIN);
Serial.Print ("registrera 2:");
Serial.println (registerContent2, BIN);
Serial.println (byte(10));
registerContent = 0;

fördröjning (250);
}

void pulseload)
{
digitalWrite (loadpin, hög);
fördröjning (5).
digitalWrite (loadpin, låg);
}

void pulseclock)
{
digitalWrite (clockpin, låg);
fördröjning (5).
digitalWrite (clockpin, hög);
}

void registerWrite (int whichPin, int whichState) {
de bitar som du vill skicka
byte bitsToSend = 0;

stänga av utdata så att stiften inte tänds
medan du skiftande bitar:
digitalWrite (latchPin_595, låg);

Aktivera den nästa högsta biten i bitsToSend:
bitWrite (bitsToSend, whichPin, whichState);

flytta bitarna ut:
shiftOut (dataPin_595, clockPin_595, MSBFIRST, bitsToSend);

Aktivera utdata så att lamporna kan lysa upp:
digitalWrite (latchPin_595, hög);

}

Annullera playtone (int num_of_tones) {
spela ett slumpmässigt meddelande från melodi
för (int jag = 0; jag < num_of_tones; i ++) {
int rand_note = random(0,7); Välj en anteckning från melody array
int rand_duration = (random(1,2)) * 4. antingen 4 eller 8
för att beräkna noterar varaktighet, ta en sekund
dividerat med Noteringstyp.
e.g. fjärdedelsnot = 1000 / 4, åttondelen noterar = 1000/8, etc.
int noteDuration = 1000/rand_duration;
tonen (tonepin, melody[rand_note],noteDuration);

Ange en minsta tid mellan dem för att skilja anteckningar.
tonens längd + 30% verkar fungera bra:
int pauseBetweenNotes = noteDuration * 1,30;
Delay(pauseBetweenNotes);
stoppa tonen uppspelningen:
noTone(tonepin);
idle_time=Millis();
}
}

void led_check(int tone_count)
{

för (int led_bit = 0; led_bit < 5; led_bit ++) {
registerWrite (led_bit, hög);
Playtone (tone_count);
fördröjning (250);
registerWrite (led_bit, låg);
idle_time=Millis(); återställa inaktiv timer
}
}

void check_idle_time() {

om (millis() > idle_time + 600000) {
10 minuters inaktivitet
led_check(2); Light lysdioder spela 2 toner
idle_time=Millis();
}
}

Se Steg
Relaterade Ämnen

Mobile Robotics med repa: bygga en Arduino-baserad insekt-liknande Walker och programmera den med Scratch

Låt oss springa runt? Detta är en Arduino-baserad, lätt att bygga version av insekt-liknande walker med klädhängare tråd och ursprungligen skapades av Jerome Demers (se också detta instructable) och Gareth Branwyn. Det finns i två versioner:en fristå...

Arduino-baserad robot med IR radar

robot prototypen i detta Instructable är min andra Arduino-baserad "slumbot" som är en autonom robot. Den är kopplad med husgeråd och skrotar. Roboten ser"" med en IR-scanning sensor roteras ett servo. Det ser vänster, framåt, och rätt...

Arduino-baserad byta spänningsregulatorer

DC till DC omvandlare används effektivt konvertera DC-spänningar. De har en verkningsgrad på upp till 95% vilket gör dem användbara för LED strips, CYKELLYSEN, batteriladdare och solar powered enheter. En spänningsomvandlare kräver en PWM källa som e...

Spåra din bil med en Arduino-baserad Lojack

Bilstölder är en verklig dra! Öka dina chanser att få tillbaka din bil genom att installera denna enkla Arduino-baserad tracker i bilen.Detta projekt är ganska enkel, och skulle vara ett bra projekt för nya Arduino programmerare letar efter något lit...

Att införa Climaduino - Arduino-baserad termostaten du styr från din telefon!

Uppdatering:Det finns en ny version av Climaduino och Climaduino Controller med några mycket väsentliga ändringar.Stöder flera zonerAnvänder Arduino YúnFungerar med Central luftkonditioneringKommunicerar med MQTT protokoll (kan integrera med andra sy...

Arduino-baserad Bi-color LED Matrix Flappy fågeln spel

Vi har byggt en hel del projekt med Bi-färg (rött och grönt) LED Matrix drivrutinsmodulen Kit från jolliFactory och har publicerat dem som instructables här. Var och en av dessa moduler använder två MAX7219 Display Driver ICs för att driva en Bi-colo...

Arduino-baserad skugga larm

Shadow larm används vanligen för skydd mot stöld. En skugga larm är en enhet som avger ett larm när en skugga faller på den. Beskrivs här är en enkel krets larm arduino baserade skugga. Denna kompakta skugga larm enhet kan avkänning en rörlig skugga...

Låg höjd miljöövervakning med en Arduino baserade väder Instrument och Aeropod Remote Sensing plattform

ProjektöversiktStudenter på New Lothrop High School i Michigan har arbetat tillsammans för att bygga en plattform för remote sensing låg höjd som kallas en "Aeropod" och rummen har det med ett "Arduino" baserade väder instrument att sa...

DIY Digital Camera Slider av leksak för barn

Låt oss börja med en grundläggande, ganska liten kamera reglaget setup. Detta DIY kameran skjutreglage kan definitivt användas för en kamera och är inget annat än en leksak för barn och du kan göra det mycket lätt...

Montering en Arduino baserade rök / värme larm

Som ni kan se från denna bloggpost jag utvecklat grunderna för det här projektet för två år sedan som ett larm / avstängning switch för RepRap 3D skrivare kit som jag bara hade samlat ihop... och som hade rökt!Första projektetSedan dess har jag haft...

Daves dans i en en Arduino baserade Motion känsliga ljus kostym

En Arduino baserad motion känsliga ljus kostymDet kan också Visa mönster och sådant även om det bara rörelse sensing i vid. Det använder en ADXL335 accelerometer känna bärare rörelse. Min vän Dave vänligt uttryckte det är dock steg med hans nya dans...

Arduino baserade Robotic Car(wireless controls+Autonomous)

Detta instructable handlar om en Arduino baserad robot bil som använder Arduino, Arduino programmeringsspråk, motor driver, en LCD-skärm visar aktuell status för bilen och även en Bluetooth-modul för trådlös kommunikation från en smartphone eller en...

Sondering och fräsning ett kretskort med en Arduino-baserad CNC

Fram till nyligen PCB sondering genom att använda en Arduino var baserad CNC-maskin en ren dröm. Tack till folket på Chilipeppr.com vi har nu baserad ett webbaserat verktyg bänk för alla våra Arduino CNC produkter. Den bästa delen; Det är gratis och...

DIY Arduino baserad MIDI fot Controller

Jag har velat prova en gitarr looper ett tag, men jag gillar inte idén att använda pengar på en looper specifika pedal när jag kan använda en dator för det och eftersom jag har fått lära arduino för kul var mycket meningsfullt att göra en en arduino...

Arduino baserade Encrypter

vi alla vill göra detta cool Arduino projekt, som inte egentligen om flyttalsrenderingsmål, utan mer om programvaran. Väl är här en - Arduino baserad kryptering över Serial Monitor. Det var verkligen roligt att utforma. Det kan finnas otaliga tillämp...

Arduino-baserad ledar-tar tid för skolor

om din skola, eller barn skola eller annan plats utnyttjar en central master klocka som är bruten, du kan ha en användning för den här enheten. Nya master klockor finns naturligtvis, men skolan budgetar är under extrema påfrestningar och det verklige...

Arduino-baserad Split-flik spel

vi har en stor nederländsk semester tradition kallas sinterklaas (5: e december, detta är vad den amerikanska Santa är baserad på). För den äldre "icke-troende" vi överraskningar. Syftet är att köpa en liten present men göra en riktigt cool &quo...

Arduino-baserad optiska varvräknare

över tio år sedan, jag har lagt upp en webbsida med detaljerade instruktioner om att bygga en enkel elmotor baserat på en från den Beakman världen TV-show. Jag kallade det "Beakmans elmotor" sidan och under åren har det haft hundratusentals, om...

LED "Namn" Switch leksak för barn

jag gjorde denna leksak ett par år sedan när min son var 2. Han har alltid varit fascinerad av lampor och växlar. I ett försök att hålla honom sysselsatt och kanske lära sig bokstäverna i hans namn, byggde jag denna enkla leksak.Begagnade delar-cirka...