Regenboog Ambient klok (2 / 3 stap)

Stap 2: Schema's en programing...


U kan dit project op verschillende manieren volgens schema's bouwen.

Een breadboard kan worden gebruikt, maar u kunt ook het lijmen van alle onderdelen (planken) achter de ring geleid en haar gezicht in een sandwich graag mode gescheiden door dubbele kant plakband (foto's van dit komt hier binnenkort). Men kan ook bouwen zijn/haar eigen gedrukte bestuur als host voor alle onderdelen.

Ik heb besloten om het gebruik van een USB-ingesloten arduino nano voor het gemak van stroom wordt voorzien, aan de eenheid. Een kleinere en compactere versie kan worden gebouwd met behulp van een USB aan Convertor TTL zoals dit één hieronder van ebay, maar je vinden een alternatieve manier moeten zou voor de stroomvoorziening (5Volts) omdat na de programmering van de arduino, de TTL-converter heeft om te gaan:

Programing bestand bevat aantekeningen voor uw begrip.

Er zijn verschillende bibliotheken voor DS3231 die er zijn, dus ik ben hier het verstrekken van degene die ik gebruik. Opmerking omvat dat u een versie van DHT11 die al wellicht ook R1 (meestal zit op een klein board en is geen rauwe onderdeel). In een dergelijk geval weglaten R1.

Dus u samenbrengen van alle onderdelen zoals en je arduino program met uw computer. Als u besluit om de mini-module gebruiken zonder de USB-poort, kunt u daarna loskoppelt en verwijdert u de TTL-adapter. Daarmee bespaart u ruimte en macht.

Daadwerkelijke code:

 <p>#include //I2C communication library<br>#include "ds3231.h" //Real Time Clock library #include //Fast Led library #include //DHT humidity-temperature sensor</p><p>#define LED_PIN 5 //Control pin for LEDs #define COLOR_ORDER GRB //Define color protocol #define CHIPSET WS2811 //Chipset set for WS2811 #define NUM_LEDS 12 //Declare number of leds #define BRIGHTNESS 35 //Declare led brightness</p><p>dht DHT; //Initialize DHT #define DHT11_PIN 2 //Data pin for DHT</p><p>CRGB leds[NUM_LEDS]; //Acknoledge number of leds to system</p><p>byte ora ; //Hour variable byte mindec ; //Ten minutes variable byte minmon ; //Unit minutes variable byte seconds = 0; //Seconds variable int counter1; //Counter variable for data show int idex = 0; //Variable for rainbow index int ihue = 0; //Variable for rainbow hue float temperature; //Temperature variable int humidity; //Humidity variable</p><p>void setup() { FastLED.addLeds(leds, NUM_LEDS); FastLED.setBrightness( BRIGHTNESS ); Serial.begin(9600); //Initialize serial port Wire.begin(); //Initialize I2C communication library DS3231_init(0x00); //Initialize Real Time Clock for 1Hz square wave output pinMode(8, INPUT); //Set pin for time/date mode button to input digitalWrite(8, HIGH); //Turn on pullup resistors pinMode(9, INPUT); //Set pin for time/date set button to input digitalWrite(9, HIGH); //Turn on pullup resistors //Initialize system with a rainbow for(int i=0; i<12; i++) {rainbow();} for(int j=0; j<12; j++) {leds[j]=CRGB::Black;FastLED.delay(100);} }</p><p>void loop(){ if((DS3231_get_addr(0x0E) & 0x20) == 0){DS3231_init(0x20);} //Init temperature sensor temperature = DS3231_get_treg(); //Get temperature from RTC struct ts t; //Structure for retrieving and storing time data from RTC DS3231_get(&t); //Get time to t structure int chk = DHT.read11(DHT11_PIN); //Obtain humidity variable from data line humidity = DHT.humidity; //Get humidity and store to variable mindec=0; //Initialize variable for ten minutes minmon=0; //Initialize variable for unit minutes</p><p> FastLED.clear(); //Clear all display //Displaying actual time if (t.hour>=12){leds[t.hour-12]= CRGB::Blue;ora=t.hour-12;} else { leds[t.hour]= CRGB::Blue; ora=t.hour; } if (t.min<10 && t.min!=0) {leds[t.min]=CRGB::Yellow;minmon=(t.min);} else { mindec=int((t.min/10)*2); minmon=(t.min-((mindec/2)*10)); if (mindec==minmon && minmon!=0){leds[mindec]= CRGB::Orange;} else { leds[mindec] = CRGB::Red ;leds[minmon] = CRGB::Yellow ; //if (minmon==0){leds[minmon] = CRGB::Black;} } } //Correcting overlapping colors/indications if (ora==minmon){leds[ora]=CRGB::Green;} if (ora==mindec){leds[ora]=CRGB::Purple;} if (ora==minmon && ora==mindec){leds[ora]=CRGB::White;} //Toggle seconds to make seconds effect if (seconds==0){ leds[int(t.sec/5)]=CRGB::DimGrey;leds[int(t.sec/5)].nscale8( 64);seconds++; } else { seconds--; } FastLED.show(); delay(800); counter1++; //Increase counter for displaying temp/hum if (counter1>70) { //Time up to display temperature and humidity counter1=0; //Initialize counter for next data show //Display temperature if (temperature<=0){for(int j = NUM_LEDS; j >=0 ; j-- ) {leds[j] = CRGB::White; leds[j].nscale8(64);delay(20);}}//Subzero tempratures appear in white background else {for(int j = NUM_LEDS; j >=0 ; j-- ) {leds[j] = CRGB::Green; leds[j].nscale8(64);delay(20);} } if (temperature<10) {leds[int(temperature)]=CRGB::Yellow;} else {mindec=int((temperature/10)); minmon=(temperature-(mindec*10)); if (mindec==minmon){leds[mindec]= CRGB::Orange;} else {leds[mindec] = CRGB::Red ;leds[minmon] = CRGB::Yellow ; } } FastLED.show(); //Show temperature in green background for 4 secs delay(4000); //Display humidity for(int j = NUM_LEDS; j >=0 ; j-- ) {leds[j] = CRGB::Teal; leds[j].nscale8(48);delay(20);} if (humidity<10) {leds[int(humidity)]=CRGB::Yellow;} else {mindec=int((humidity/10)); minmon=(humidity-(mindec*10)); if (mindec==minmon){leds[mindec]= CRGB::Orange;} else {leds[mindec] = CRGB::Red ;leds[minmon] = CRGB::Yellow ; } } FastLED.show(); //Show humidity in teal background for 4sec delay(4000); //Rainbow effect call for(int i=0; i<12; i++) {rainbow();} for(int j=0; j<12; j++) {leds[j]=CRGB::Black;FastLED.delay(100);} } // Set time using buttons</p><p> if(!digitalRead(8) && digitalRead(9)){ //Increment hour if button held dowm delay(100); //100ms delay to avoid accidental button triggering t.hour = t.hour + 1; //Increment the hour if (t.hour>23){t.hour=0;} Wire.beginTransmission(DS3231_I2C_ADDR); Wire.write(2); Wire.write((t.hour/10*16)+(t.hour%10)); Wire.endTransmission(); } </p><p> if(!digitalRead(9) && digitalRead(8)){ //Increment minutes if button held down delay(100); //100ms delay to avoid accidental button triggering t.min = t.min + 1; //Increment minutes if (t.min>59){t.min=0;} Wire.beginTransmission(DS3231_I2C_ADDR); Wire.write(1); Wire.write((t.min/10*16)+(t.min%10)); Wire.endTransmission(); }</p><p> if(!digitalRead(9) && !digitalRead(8)){ //Reset seconds if both buttons held down delay(100); //100ms delay to avoid accidental button triggering t.sec = 0; //Reset seconds Wire.beginTransmission(DS3231_I2C_ADDR); Wire.write(0); Wire.write((t.sec/10*16)+(t.sec%10)); Wire.endTransmission(); }</p><p>}</p><p>void rainbow() //Rainbow function { idex++; ihue=ihue+22; if(idex>=NUM_LEDS){idex=0;} if(ihue>=255){ihue=0;} leds[idex]=CHSV(ihue,255,255); FastLED.show(); FastLED.delay(100); }</p> 

Gerelateerde Artikelen

Regenboog Neo klok

Regenboog Neo klok

Deze klok is gemaakt als een geschenk, maar ik was zo blij mee dat ik dacht dat ik zou een instructable daarvoor. De klok gebruikt 2 Neo Pixel ringen van Adafruit industrieën , alsmede de Pro Mini Arduino microcontroller en een DS1307 Real Time Clock
Regenboog Mega Pong klok

Regenboog Mega Pong klok

dit is mijn rekening op de klassieke Pong klok met een RGB-achtergrondverlichting dat verandert elke keer dat de datum wordt weergegeven.Een grote dank aan mrnick1234567 en zijnIk wilde het licht veranderen willekeurig door de dag, maar het maakte ee
Regenboog klok

Regenboog klok

Ik geloof helemaal in recycling... en terwijl die ik graag giften maken en mijn kinderen leren hoe kun je echt leuke dingen met dingen die je weggooien... sparen het milieu... en geld besparen door het maken van dingen die je kunt gebruiken en cadeau
Infinity spiegel klok

Infinity spiegel klok

Sinds mijn adresseerbare RGB LED strips (WS2812B) kwam uit Aliexpress, heb ik al gefascineerd met LED projecten. In aansluiting op mijn succes met mijn Charlieplexed LED-klok, wilde ik om iets te creëren met meer Jazz...Tijdens het browsen google afb
Regenboog fiets makeover w. acryl

Regenboog fiets makeover w. acryl

Moe van de oude saaie fiets? En je liefde kleuren? Nou, waarom niet regenbogen?Het grote ding over dit makeover, het kan worden gedaan zonder te kopen van een ton van verschillende spuitbussen, die echt duur als je moet kopen van 6 + blikjes kan zijn
Lamina Nixie Klok

Lamina Nixie Klok

dit is mijn eerste instructable en ik hoop u van het zult houden. Ik heb het lezen van deze website voor een tijdje nu en ik besloten om mijn project publiceren. Ik ben niet-native speaker Engels gelieve excuus mijn taal fouten.Dit project is geïnspi
Volledige digitale klok met aanwezigheid Sensor (RTC - Alarm - PIR - temperatuur - vochtigheid - dauwpunt)

Volledige digitale klok met aanwezigheid Sensor (RTC - Alarm - PIR - temperatuur - vochtigheid - dauwpunt)

HoiIk heb al enkele digitale klokken projecten gedaan met Arduino met inbegrip van LED en LCD schermen, maar deze is specialer omdat ik hebben een nieuwe functie ingevoerd met een bewegingssensor (PIR).Zie VIDEOBelangrijkste kenmerkenPIR (aanwezighei
Arduino IoT weer klok

Arduino IoT weer klok

In dit Instructable bouwen we een klok die ook binnen en buiten de klimatologische omstandigheden toont.Ik gebruikte om een koele kleine klok die, naast het vertellend de tijd, ook de temperatuur in het huis, de datum en de buitentemperatuur via een
3D Rainbow klok

3D Rainbow klok

Ik heb altijd een ding voor ongebruikelijke klokken en dus ik vind mezelf altijd waardoor ze ofwel te verkopen of als geschenken. En laten we eerlijk zijn, 'Klokken' zijn sommige ding dat zeer essentieel in elke kamer is! Ik weet het, sommigen zouden
Weerstand kleur Code klok

Weerstand kleur Code klok

Noem me een enorme nerd, maar ik heb onlangs besloten bleek het noodzakelijk om te onthouden van de kleurcodes gebruikt ter aanduiding van de waarden van verschillende weerstanden.  Ik heb ook onlangs geworden geïnteresseerd in het maken van de (rela
Regenboog Word Clock

Regenboog Word Clock

ik heb eindelijk in geslaagd tot het einde van de regenboog Word Clock!Nogmaals, werd deze geïnspireerd door Doug en zijn creatiesIk heb een fixatie met RGB-LED's op het moment en ik wilde iets een beetje anders te doen.Dus, terwijl het is nog steeds
Zonne-aangedreven klok Hack

Zonne-aangedreven klok Hack

dit is een eenvoudige houwer waardoor uw calculator om te werken op zonne-energie, maar er is een draai in er zijn we niet gaan gebruiken van fotovoltaïsche cellen, maar we gaan het gebruik van LED's om te bouwen van een zonnecel. De LED's kunnen nie
Regenboog Jar - RGB Pixel Strip gecontroleerd via Arduino

Regenboog Jar - RGB Pixel Strip gecontroleerd via Arduino

onze meest populaire item onze tentoongesteld in Maker Faires is altijd de Rainbow Jar. Een klant heeft al het gerepliceerd, dus we dachten dat we zouden delen hoe we het gemaakt dat zodat kunt u uw eigen!https://Vine.co/v/hqxpVgdFQ9z (beproefd te em
Regenboog weefgetouw Starburst Bracelt

Regenboog weefgetouw Starburst Bracelt

te maken van de regenboog weefgetouw Starburst armband u moet:-1 rainbow Loom-1 C-clip-Meerdere elastiekjes van verschillende kleurenStap 1: Plaatsen van de bands Beginnen met de Rainbow Loom in een richting waar de rode pijl is geconfronteerd met va