Overschakelen van de alarmklok Arduino (2 / 2 stap)

Stap 2: Code

// TONES ==========================================

Beginnen met het definiëren van de relatie tussen / / opmerking, periode, & frequentie. #define c 3830 / / 261 Hz #define d 3400 / / 294 Hz #define e 3038 / / 329 Hz #define f 2864 / / 349 Hz #define g 2550 / / 392 Hz #define een 2272 / / 440 Hz #define b 2028 / / 493 Hz #define C 1912 / / 523 Hz / / definiëren een speciale opmerking, 'R', te vertegenwoordigen een rust #define R 0 / / SETUP === / / spreker op een PWM-pin (digitale 9 instellen 10 of 11) int speakerOut = 9; int speakerOnTime = 250; Verklaren redOnTime een int en ingesteld op 250 mseconds int speakerOffTime = 0; Verklaren redOffTime een int en ingesteld op 250 / / willen wij debuggen op seriële out? 1 voor Ja, 0 voor geen int DEBUG = 1; int redled = 10; Verklaren redLEDPin een int en ingesteld op pin 20 int redledOnTime = 250; Verklaren redOnTime een int en ingesteld op 250 mseconds int redledOffTime = 0; Verklaren redOffTime een int en ingesteld op 250 int yellowled = 11; Verklaren redLEDPin een int en ingesteld op pin 20 int yellowledOnTime = 250; Verklaren redOnTime een int en ingesteld op 250 mseconds int yellowledOffTime = 0; Verklaren redOffTime een int en ingesteld op 250 int knop = 2; int statePin = laag; void setup {pinMode (redled, OUTPUT); / / Arduino vertellen dat redLEDPin is een uitgang pin pinMode (yellowled, OUTPUT); / / Arduino vertellen dat redLEDPin is een uitgang pin pinMode (knop, OUTPUT); pinMode(speakerOut, OUTPUT); als (DEBUG) {Serial.begin(9600); / / Set seriële uit als we willen dat foutopsporing}} / / melodie en TIMING === / / [melodie] is een array van nota's, vergezeld van beats [], / / waarin elke nota's relatieve lengte (hogere # en langere opmerking) int melodie [] = {c g, a, g, f, e, d, c, g, f, e, d, g}; int verslaat [] = {8, 8, 8, 8, 16, 8, 8, 8, 16, 16, 8, 8}; int MAX_COUNT = sizeof(melody) / 2; Melodie de lengte, voor een lus. Set algehele tempo lange tempo = 10000; Instellen van de lengte van de pauze tussen notities int pauze = 1000; Lus variabele toe Rest lengte int rest_count = 100; <-BLETCHEROUS HACK; Zie ' opmerkingen ' / / initialiseren kern variabelen int tone_ = 0; int verslaan = 0; lange duur = 0; PLAY TONE === / / Pulse de spreker om af te spelen van een Toon voor een bepaalde duur nietig playTone() {lange elapsed_time = 0; als (digitalRead(button)==HIGH) {als (tone_ > 0) {/ / als dit niet een Rest beat, terwijl de Toon heeft / / luidspreker die hoge en lage minder lang dan 'duur' gespeeld, pulse (elapsed_time < duur) {digitalWrite(speakerOut,HIGH); delayMicroseconds(tone_ / 2); / / neer digitalWrite (speakerOut LAAG); delayMicroseconds(tone_ / 2); Bijhouden van hoe lang we gepulseerde elapsed_time += (tone_); {}} else {/ / Rest verslaan; lus keer vertraging voor (int j = 0; j < rest_count; j ++) {/ / zienoot op rest_count delayMicroseconds(duration);}}} } / / Laat de WILD RUMPUS beginnen === void loop {/ / instellen van een teller te trekken uit de melodie [] en beats [] voor (int ik = 0; ik playTone(); / / een pauze tussen merkt... delayMicroseconds(pause); analogWrite(speakerOut,500); digitalWrite(redled,HIGH); //Turn rode LED op delay(redledOnTime); //Leave op voor redOnTime digitalWrite(redled,LOW); //Turn rode LED off van delay(redledOffTime) //Leave uit voor de redOffTime digitalWrite(yellowled,HIGH); //Turn rode LED op delay(yellowledOnTime), //Leave op voor redOnTime digitalWrite (yellowled LAAG); Zet rode LED uit delay(yellowledOffTime); digitalWrite(speakerOut,HIGH); delayMicroseconds(tone_ / 2); delay(speakerOnTime); Laat op redOnTime digitalWrite (speakerOut, laag); delayMicroseconds(tone_ / 2); delay(speakerOffTime); Weglaten voor redOffTime digitalWrite(redled,HIGH); Zet de rode LED op delay(redledOnTime); Laat op redOnTime de digitalWrite(redled,LOW); Zet rode LED uit delay(redledOffTime); Weglaten voor redOffTime digitalWrite(yellowled,HIGH); Zet de rode LED op delay(yellowledOnTime); Laat op redOnTime de digitalWrite(yellowled,LOW); Zet rode LED uit delay(yellowledOffTime); Weglaten voor redOffTime}} / * * opmerkingen * het programma pretendeert te houden een Toon voor 'duur' microseconden. * Leugens ligt leugens! Het geldt voor ten minste 'duur' microseconden, _plus_ * overhead gemaakt door incremeting elapsed_time (zou dan * 3K microseconden) _plus_ overhead van looping en twee digitalWrites() ** dientengevolge een Toon van 'duur' speelt veel langzamer dan een rest * van 'duur.' rest_count maakt een lus variabele om 'rest' beats * in overeenstemming met 'Toon' beats van dezelfde lengte. ** rest_count zal worden beïnvloed door chiparchitectuur en snelheid, evenals * overhead van elk programma mods. Afgelopen gedrag is geen garantie voor de toekomst * prestaties. Jouw snelheid kan variëren. Lichte fuse en wegkomen. ** Dit kon gebruiken een aantal verbeteringen: * toevoegen code te laten de programmeur opgeven hoeveel keer de melodie moet * lus voordat stoppen * toevoegen een ander octave * MOVE tempo, pauze en rest_count #define verklaringen * HERSCHRIJVEN te nemen volume, met behulp van analogWrite, net als bij het tweede programma op * http://www.arduino.cc/en/Tutorial/PlayMelody * ADD code om het tempo instelbaar door pot of een ander invoerapparaat * ADD code te nemen tempo of volume instelbaar door seriële communicatie * (0005 vereist of hoger.) * ADD code om te creëren een Toon-offset (hoger of lager) via pot enz * vervangen willekeurige melodie met opening bars 'Smoke on the Water' * /

Gerelateerde Artikelen

Het gebruik van Inkscape voor Arduino labels en projecten

Het gebruik van Inkscape voor Arduino labels en projecten

Een jaar geleden kwam ik een artikel in noten en volt Magazine over het maken van professioneel uitziende panelen voor projecten. Het artikel wordt op lijn en verklaart het veel beter dan ik kan, met veel meer detail. Ik verzoek u om de uitstekende t
Doolhof van Oplosser met Arduino en ArduMoto(Micromouse) V:1.1

Doolhof van Oplosser met Arduino en ArduMoto(Micromouse) V:1.1

Deze '' Instructables'' wil helpen een maker, enthousiast te maken hun eigen doolhof Oplosser (Micromouse). Het bestaan van de Micromouse heeft gedateerd terug tot de jaren 1950 en sindsdien wedstrijden worden vastgehouden. Hoewel u deze competities
Programmeren van AVR met Arduino als ISP zonder Bootloader en externe Crystal

Programmeren van AVR met Arduino als ISP zonder Bootloader en externe Crystal

Hallo!!. Ik ben Avra en dit is mijn eerste instructable. Hier ga ik uitleggen hoe te branden van codes op standalone AVR ICs zonder gebruik te maken van elke USBASP, elke externe crystal en elke bootloader. U hoeft alleen een Arduino board. Mogelijk
Repareren van een gebakken Arduino Mega

Repareren van een gebakken Arduino Mega

Soms kan jij iets stoms, andere keren is het volstrekt onverklaarbaar, maar als gevolg van welke evenementen, het groene lampje op uw Arduino gestopt komt op. In mijn geval bleek te zijn een verbrand uit spanningsregelaar.Dit ondoorgrondelijke is een
Toezending van gegevens van Android aan Arduino via audio-aansluiting

Toezending van gegevens van Android aan Arduino via audio-aansluiting

Met dit project kunt u bytes van android naar arduino met behulp van alleen een audio jack connector.Hoe het werkt?Principe, signaal android een "morse" audio naar arduino. Arduino in de andere hand decoderen de morse-code aan een byte. Zo eenvo
MRETV - Video, Stereo geluid en nog veel meer van een standaard Arduino!

MRETV - Video, Stereo geluid en nog veel meer van een standaard Arduino!

MRETV - Video, Stereo geluid en nog veel meer van een standaard Arduino!Nu bijgewerkt voor Arduino 1.6.6 November 2015!Gebruik slechts twee weerstanden en twee diodes voor het genereren van de volledig-schermvideo. Tekst 47 x 29 van 8 x 8 karakters,
Automatisch Street licht controle met behulp van LDR en Arduino

Automatisch Street licht controle met behulp van LDR en Arduino

Automatische straat licht controle wordt gebruikt voor het bepalen van de straatverlichting (inschakelen en uitschakelen op basis van het licht).Hier maken we gebruik van LDR (Light Dependent Resistor) en de LED (Light Emitting diode) en de arduino.H
Het eerste gebruik van ESP8266 met Arduino Uno

Het eerste gebruik van ESP8266 met Arduino Uno

Vandaag, ga ik om u te tonen die hoe kunnen we onze module ESP8266 voor gebruik met Arduino UNO voorbereiden.De noodzaak lijst:1. Arduino UNO (met USB-kabel die op uw computer via USB-kabel aangesloten, ook wordt gebruikt de spanning)2. uw computer (
Bouwen van uw eigen Arduino

Bouwen van uw eigen Arduino

Opzetten van een Arduino op een breadboard is een proces dat ik heb uitgegroeid tot liefde geworden.Binnen enkele minuten kunt u hebt een volledig werkende Arduino platform om met te werken zoals u in deze tutorial zien zult. Er zijn verschillende ge
Super Spooky Evil LED ogen van Doom met behulp van atTiny85 en Arduino IDE

Super Spooky Evil LED ogen van Doom met behulp van atTiny85 en Arduino IDE

er zijn een paar spooky ogen instructables daar. Bijvoorbeeld, is er een op basis van een 555 timer, op basis van een aan/uit-schakelaar, een op basis van Arduino, en een gebaseerd op tape.Ik wilde een aantal spookachtige kwade ogen die voldoet aan d
Ontwikkeling van de workshop Arduino

Ontwikkeling van de workshop Arduino

HalloIn dit instructable ga ik om u te tonen hoe ik werk met Arduinos en wat is de ideale setup voor het werken op arduino gebaseerd project.Ik heb onlangs een heleboel spullen uit china voor een zeer kleine hoeveelheid geld dus heb ik besloten om di
Het kiezen van de juiste Arduino Board:

Het kiezen van de juiste Arduino Board:

Dit instructable zal u helpen bij het kiezen van de juiste Arduino board voor uw projecten en voor uw begin op Arduino gebied, dus ik zal proberen om het zo eenvoudig mogelijk te maken.Er zijn een heleboel varianten van de arduino, zodat de verschill
Hoe u kunt besturen van motoren met Arduino en RC ontvanger in 10 minuten

Hoe u kunt besturen van motoren met Arduino en RC ontvanger in 10 minuten

Dit is mijn tweede tutorial over het beheersen van dingen met Arduino en R/C ontvangers. Als u nog niet naar mijn eerste tutorial gekeken ik stel voor dat je eerst hier kijkt: in deze tutorial die we zullen kijken naar hoe de controle motoren ook met
Bouwen van uw eigen Arduino Compatible IoT Development Board

Bouwen van uw eigen Arduino Compatible IoT Development Board

In dit instructable ForceTronics kijken we hoe het bouwen van uw zeer eigen Arduino compatibel internet van dingen ontwikkel bord. De Raad van bestuur heeft de Atmega 328p met de Uno bootloader, energiezuinige Bluetooth-module, en andere functies zoa