Arduino & Neopixel helt härledda falska TV (5 / 8 steg)

Steg 5: Kod källa notering

DIY falska TV

Hålla inbrottstjuvar borta medan du är borta

Skapad av Jonathan Bush
Senast uppdaterad 3/24/2015
Runnig på ATTiny 85

Uppdaterad 8/4/2015 av Mark Werley för prydnadssak Pro
Omskriven för att undvika användning av funktionen delay()
Initierade MAXBRIGHT till 255, högst
Lagt till användningen av multiMAP funktionen för att konvertera en enhetlig fördelning till något nonuniform
Lagt till en auto-avstängningsfunktionen så lamporna gå mörka efter en viss tid
Lagt till en mjuk omstart funktion efter 24 timmar så showen startar upp igen varje dag vid samma tidpunkt
Lagt till en blinkning på den inbyggda LED, så att användaren kan berätta program körs när neopixels är avstängda

#include < Adafruit_NeoPixel.h >

#define PIN 3 //PIN 3 "kör" i NeoPixels. Fungerar på Uno eller fasad Pro
#define ledPin 13 //PIN 13 har inbyggd LED för Uno eller prydnadssak Pro

#define buttonPin 4 //PIN 4 har en knapp kopplad via en 10 k pullup resister

int ledState = låg; Hålla reda på statligt av inbyggda LED
int buttonState = 0; Hålla tarmkanalen av knappen
int endShow = false; Sant när showen är över

int POTPIN = A1; 1. analoga potten pin, används för att justera ljusstyrkan
int POTPIN2 = A2; 2. analoga potten pin, används för att justera ljusshow skär hastighet
int POTPIN3 = A3; 3. analoga potten pin, används för att justera runtime av showen

Neopixel biblioteket som tillhandahålls av Adafruit, ändra 1 parameter antal lysdioder i din neopixels
Adafruit_NeoPixel strip = Adafruit_NeoPixel (16, PIN, NEO_GRB + NEO_KHZ800);

int ljusstyrka = 0;
int rött = 0;
int blå = 0;
int grön = 0;
int TIMEDEL = 0;
int mapTIMEDEL = 0;
int MAXBRIGHT = 255; Ange MAXBRIGHT 255, max, om ingen ljusstyrka pot
int speedDivider = 1; Ange speedDivider 1, om inget snitt hastighet pot
int potval = 0;
int potval2 = 0;
int potval3 = 0;

osignerade långa runTimeMillis = 0; Hur lång tid falska TV-ljusshow kommer att köras i millisekunder
int runTime = 120; Hur länge Fake TV ljusshow tar i minuter, 2 timmar om inga runTime pot
osignerade långa startMillis = 0; Som ingick i urvalet starttiden för programmet, ususally bara 0 eller 1 millisekunder
osignerade långa previousMillis = 0; Kom ihåg antalet millisekunder från den tidigare skär trigger
osignerade långa rebootTimeMillis = 0; Hur länge programmet kommer att köras innan en soft reset/omstart händer (24 timmar = 86,400,000 ms)
osignerade långa currentMillis = 0; Hur länge programmet har körts hittills

int i [] = {200, 520, 840, 1160, 1480, 1800, 2120, 2440, 2760, 3080, 3400, 3720, 4040}; Detta är bara linjära

int ut [] = {200,392,968,2120,3272,3848,4040,3848,3272,2120,968,392,200}. normalfördelning
int ut [] = {200,392,2120,3848,4040,3848,3560,3272,2696,2120,968,392,200}. LnNormal-ish
int ut [] = {200,250,300,400,600,1200,4040,1200,600,400,300,250,200}. består
int ut [] = {200, 250, 300, 350, 400, 500, 600, 700, 800, 1200, 2000, 3000, 4040}; består #2

void setup() //Initialize allt
{
Initiera NeoPix
Strip.BEGIN();
Strip.show(); Initiera alla pixlar till "off"
pinMode (PIN, OUTPUT); Ange neopixel kontroll stift till utgång

pinMode (ledPin, produktionen); Ange det inbyggda LED stiftet till utgång

pinMode (buttonPin, ingång); ställa in knappen PIN-koden till insatsen

Initiera den seriella com, för felsökning på Uno eller prydnadssak Pro (w FTDI kabel), kommenterar ut för produktion
Serial.BEGIN(9600);
Serial.println ("---Start seriell övervaka SEND_RCVE---");
Serial.println ("följetong är aktiv");
Serial.println();

rebootTimeMillis = 24ul * 60ul * 60ul * 1000ul; hardcode reboot i 24 timmar

startMillis = millis(); prov starttiden för programmet
}

void loop() //Start huvudsakliga slingan
{
currentMillis = millis(); provet millisekunder sedan startades

om (currentMillis > rebootTimeMillis) softReset(); När rebootTimeMillis nås, pånyttfödd

Låt oss läsa våra sensorer/kontroller

potval = analogRead(POTPIN); Läser analoga värde från ljusstyrka Potentiometer/spänningsavdelare, kommentera ut om du inte använder
MAXBRIGHT = karta (potval, 0, 1023, 11, 255); Kartor spänningsavdelare läsning för att ställa in max ljusstyrka btwn 11 och 255, kommentar ut om du inte använder

potval2 = analogRead(POTPIN2); Läser analoga värde från snitt hastighet Potentiometer, kommenterar ut om du inte använder
speedDivider = karta (potval2, 0, 1020, 1, 8); Kartor andra potten läsning att mellan 1 och 8, kommentera ut om du inte använder

potval3 = analogRead(POTPIN3); Läser analoga valuse från Visa lenth Potentiometer, kommentera ut om du inte använder
runTime = karta (potval3, 0, 1020, 15, 480); Kartor tredje potten till mellan 15 och 480 minuter (1/4 till 6 timmar), kommentera ut om du inte använder
runTimeMillis = long(runTime) * 60ul * 1000ul;

Serial.Print("potval3=");
Serial.Print(potval3);
Serial.Print ("runTime =");
Serial.Print(Runtime);
Serial.Print ("runTimeMillis =");
Serial.println(runTimeMillis);

buttonState = digitalRead(buttonPin); Smaka på statligt av knappen
om (buttonState == hög) endShow = sant; Knappen trycktes, dags för att avsluta kvällens show

om ((currentMillis-previousMillis) > long(mapTIMEDEL)) //Test att se om vi är för ett snitt (belysning förändring)
{
LJUSSTYRKA = random (10, MAXBRIGHT). Ändra bildskärmens ljusstyrka från 20% till 100% slumpmässigt varje cykel
RÖD = random (150, 256); Värdet för den röda komponent från 150 till 255
BLÅ = random (150, 256); Ange den blå komponentvärde från 150 till 255
GRÖN = random (150, 256); Ange den gröna komponentvärde från 150 till 255
TIMEDEL = random (200, 4040); Ändra intervall slumpmässigt mellan 0,2 av en sekund till 4,04 sekunder

mapTIMEDEL = multiMap (TIMEDEL, in, ut, 13); Använd funktionen multiMap att mappa om förseningen till något ojämn
mapTIMEDEL = mapTIMEDEL / speedDivider; Dela upp av speedDivider att ställa snabba nedskärningar

om ((currentMillis-startMillis) > runTimeMillis) endShow = sant; runTimeMillis har gått ut, dags för att avsluta kvällens show

om (endShow) //Show's över för natten, aww...
strip.setBrightness(0);
annat //The visar är på!
strip.setBrightness(BRIGHTNESS);

colorWipe (remsa. Färg (röd, grön, blå), 0); Omedelbart ändra hela remsan till nya slumpmässigt genererade färg

om (ledState == hög) //toggle variabeln ledState
ledState = låg;
annat
ledState = hög;

digitalWrite (ledPin, ledState); Flip statligt av (blinka) den inbyggda LED

previousMillis = currentMillis; uppdatera previousMillis och loop tillbaka runt
}
}

Fylla prickar en efter den andra med en färg
void colorWipe (uint32_t c, uint8_t vänta)
{
för (uint16_t jag = 0; jag < strip.numPixels(); i ++)
{
strip.setPixelColor (i, c);
Strip.show();
}
}

Tvinga ett hopp till adress 0 för att starta om skiss. Återställer inte hårdvara eller register
void softReset()
{
ASM flyktiga ("jmp 0");
}

multiMap används för att mappa en distribution till en annan med hjälp av interpolering
Obs: _in matrisen ska ha allt större värden
Kod av rob.tillaart
int multiMap (int val, int * _in, int * _out, uint8_t storlek)
{
ta hand värdet ligger inom intervallet
Val = begränsa (val, _in [0], _in[size-1]);
om (val < = _in[0]) avkastning _out [0];
om (val > = _in [storlek - 1]) returnerar _out [storlek - 1];

Sök rätt intervall
uint8_t pos = 1; _In [0] allready testade
medan (val > _in[pos]) pos ++;

Detta kommer att hantera alla exakta "punkter" i matrisen _in
om (val == _in[pos]) avkastning _out [pos];

interpolera i segmentet rätt för resten
avkastning (val - _in [pos - 1]) * (_out [pos] - _out [pos - 1]) / (_in [pos] - _in [pos - 1]) + _out [pos - 1];
}

Se Steg
Relaterade Ämnen

Arduino: NeoPixels (WS2812) enkelt - indexerade pixlar

Ingenting kan landhöjningen semester anda som färgglada blinkande lysdioder :-)Arduino med några NeoPixels från Adafruit eller liknande typ av WS2812 baserade smart pixlar är perfekta för detta, och med hjälp av Visuino en lättanvänd och kraftfull gr...

Arduino & Neopixel Cola flaska Party ljus

Så min son Doon fläckar en väldigt cool part ljus gjorda av gamla Cola flaskor och sentimental inälvsprodukter av Glow Sticks, och frågar om vi kan göra en för hans kommande School tentor är över Blowout PartAYYY!!! Jag säga säkert, men skulle du int...

Stargate inspirerade Arduino NeoPixel 3D tryckta klockan

Stargate DHD klocka visar tiden med NeoPixel LED orienterade kring en simulerad urtavla. Klockan ger en timme och halv timme chime som kan slås på och av. Timmar och minuter kan ställas in via tryckknappar på baksidan av klockan basen. Center kristal...

Enkla arduino neopixel test

Hej instructabledu vet kamp när du skriver en kod för din neopixel lysdioder och du är inte säker på om din neopixel ledde fungerar bra eller din kod är bud upp?Anyway vet jag problemet,så jag gjorde ett litet test koden att se din lysdioder lyser rö...

Köpguide för Arduino Uno

Välja en Arduino att köpa kan vara förvirrande, speciellt om du funderar på köpa en Uno. Online säljare kan utelämna viktig information, Sälj inaktuell eller felaktigt prissatta styrelser och vissa kan vara direkt vilseledande. Jag hoppas att ge info...

Bygga din Internet kontrollerad Video-Streaming Robot med Arduino och Raspberry Pi

< the Instructable och koden är redo. Njut! Lämna en kommentar med du feedback! >Jag är (aka LiquidCrystalDisplay / Itay), en 14 år gammal student från Israel lärande i Max Shein Junior High School för avancerad vetenskap och matematik. Jag gör dett...

Android kontrollerade ljus och kraft, pfodDevice för Arduino

Uppdatering: Se Android/Arduino för nybörjare - Design anpassade Android menyer att slå Arduino utgångar på och av. Absolut No programmering krävs för ett alternativ som inte kräver någon programmering alls.===========================================...

LÄS DETTA INNAN DU KÖPER EN ARDUINO!

Under åren har Arduino blivit mer och mer kända. främst på grund av dess mycket enkelt och förbrukaren vänlig mjukvaran, dess extremt stor och ständigt växande gemenskap och slutligen dess modularitet.Numera äger nästan alla elektronik hobby iallafal...

Hur man gör en avlägsen kontrollerade Robotic Hand med Arduino

Detta är mitt skolprojekt för den 5: e året i gymnasiet (jag är italienska, vi har 5 år på gymnasiet).Det består i en konstgjord hand kontrolleras av en handske med flex sensorer. Konstgjord hand återger rörelser i handen med kontroll handsken, trådl...

ATtiny programmering med Arduino

efter detta Instructable bör du kunna programmera en A Ttiny85/45 med en arduino. Det låter kanske komplicerat men det är verkligen inte. Efter lite forskning kunde jag inte hitta till mycket information om hur detta skulle kunna ske. Jag har dock hi...

Programmera ATmega16A genom att använda arduino IDE

Assalamualaikum warahmatullahi wabarakatuhHej, är mitt namn Ekky Hermestian IW från IndonesienDenna tutorial ska show dig hur man programmerar en ATmega16 använder Arduino IDEVi kan använda syntax sompinMode()digitalWrite()digitalRead()och många fler...

Styra Arduino styrelsen trådlöst med iPhone, iPad eller iPod med iArduino App och Ethernet Shield

denna tutorial vägleder dig till hur man gör hela installationen till kontroll din Arduino ombord med iArduino program. Vi kommer att använda Led för förståelse, och vi kommer att byta det till och från med hjälp av iArduino app. Från detta kommer du...

Göra en slagsäck i Arduino och enighet med hjälp av Joystic och ballong

Detta instructable handlar helt enkelt om att läsa indata från en arduino joystic men med en liten twist! Vi kommer att göra våra joystick till en slagsäck :) och ännu bättre kommer vi visualiserar hela processen i unity3DObservera att hela denna ins...

Liten footprint Arduino Nano med USB-laddning krets (Li-Ion eller LIPO) som kan stänga av sig själv (mjuk spärren power)

När jag började min första Arduino projekt, insåg jag att jag behövde använda ett litet format Arduino så att jag kan bifoga den i min enhet. Att vara ny på Arduino, visste inte jag att alla de utmaningar som jag skulle ha med batteri förvaltning!Eft...

FM-Radio med Si4703 Breakout styrelsen, LCD och Arduino

Detta projekt är bara en liten del av ett större projekt jag arbetat med under de senaste åren (på och utanför). Bakgrunden till detta projekt är att ett par år tillbaka, jag hittade en modern jukebox (iPod-anslutning, AM / FM-radio, CD-spelare...) s...

Hur man gör en Arduino ljud synthesizer med MIDI-gränssnittet

Med denna synt kan du göra Arduino reproducera helt anpassade vågformer. På grund av MIDI-gränssnittet, kan det anslutas till alla instrument som sådan har och spela det med det ljud som du vill.Steg 1: materialArduino (i detta fall Arduino UNO)Instr...

Hur man programmerar Vexplorer använder Arduino

detta instructable kommer att handla om använder arduino för att styra revell vexplorer. Senare kan du lägga till så många sensorer du vill. Om du inte redan har de flesta delar kostar detta ca $200 dollar. De flesta av de elektroniska bitar du kan h...

Använda sublima Text 2 att ersätta Arduino IDE

Vi kan ofta känna sig frustrerade vid programmering använder Arduino IDE. Varför? Inte på grund av hur många fel vi möter i programmet, men det är så svårt att hitta felen i källkoden, som verkligen något flippar ut. Till exempel Arduino IDE verkar i...

Bionic Iron Man handske

En av våra främsta passioner är att motivera de nästa stora sinnen och idéer genom att publicera informativ steg för steg tutorials. För att fira lanseringen av vår fjärde generationens muskel sensor, MyoWare, vi har revisited våra populäraste tutori...