Arduino multi-mode lampa med soft touch switch (6 / 6 steg)

Steg 6: Senaste skissen.



/*

  • Tri-LED (piranha) matrix & touch test
  • (C) Copyright 2009 qs
  • Moduler (vald av progMode)
  • 0 - sekvens
  • 1 - vitt ljus. DIMS samtidigt på "paus".
  • 2 - morphing färger. Random lights sakta blandning.
  • 3 - Eldskenet. Fladdrande lågor (svårt att göra när det finns ingen riktig gula!)
  • 4 - eldflugor. Tävla med uppvaktning ritual av arten.

*

  • 20mA integrerad färg LED - gemensam anod!
  • D02 - röd (låg aktivera!)
  • D03 - grön
  • D04 - blå
  • D05 - längst till höger LED (hög aktivera)
  • D06 - center LED
  • D07 - längst till vänster LED

*/

int matrix [5] = {
0660,0626,0466,0,0}
; Rainbow display
int matrix02 [5] [2] = {/ / Morphing rutin & firelight
{
511,7}
,{
511,56}
,{
511,504}
,{
511,0}
,{
511,504}
};
unsigned int firefly [4] = {
0xdd42, 0xff00, 0x8a00, 0x2200};
/ * Eldflugor:

  • MSB - (7:5) intensitet (0-7)
  • (4:2) försening i 1/2 sek enheter
  • (1:0) typ av bugg (1 = kvinna, 2,3 = hanar)

*/

För att justera stegmotor sekvenser
lång bigDelay = 300, bigD;
int fsuitors = 0, i, j, val, LED, c0, c1, r0, g0, b0, r1, g1, b1, vita = 7.

int progMode = 0; Växeln... fall selector (99 är TEST)
int controlPin = 12, sw02 = 0; Switch status på A02
osignerade långa dttimer02 = 0, timer02 = 0, ffTimer = 0; watchdog timer
int tröskel = 100; millisekunder för en "touch", trippel för "paus"

void setup() {
för (int jag = 2; jag < = 7; i ++) {
pinMode(i,OUTPUT);
digitalWrite (jag, jag < 5);
}
randomSeed(analogRead(0));
pinMode(12,OUTPUT); Vår master touch manöverkontakt
digitalWrite(12,LOW);
analogReference(INTERNAL); Boost (touch) känslighet! Aref är offlimits!

för (jag = 1; jag < 4; i ++) {/ / ställa upp eldflugor rutin
j = random(2,4); Typ av manliga
j + = ((j + i-3) << 2); Uthållighet (brist) 0-7
Firefly [i] = (j << 8) | (j << 1) |
((i+3) << 13); Energi (ljusstyrka)
}
}

void loop() {
bigD = bigDelay+millis(); Calc timeout

växel (progMode) {
fall 0:
göra {
för (LED = 0; LED < = 2; LED++)
writeLED(LED,matrix[LED]);
}
medan (bigD > = millis());

om ((sw02&7) == 0) {/ / håll är håll!
Matrix [0] = matrix [0] ++ & 511; rolig matematik

Jag = (matrix [1] + 8); Öka grön
om (jag > 511) jag = (jag & 7) + 1;
Matrix [1] = i.

Jag = (matrix [2] + 64); Öka blå
om (jag > 511) jag = (jag & 63) + 1;
Matrix [2] = i.
}
bryta;

fall 1:
{
R1 = (vit << 6) | (vita << 3) |white;
medan (bigD > =millis())
för (LED = 0; LED < = 2; LED++)
writeLED(LED,r1);
om ((sw02&7)! = 0) {
vit--;
om (vit < = 0) vit = 7.
}
bryta;
}

fall 2:
{
för (LED = 0; LED < = 2; LED++) {
om ((sw02&7) == 0) {/ / håll är håll!
C0 = matrix02 [LED] [0];
C1 = matrix02 [LED] [1].
om (c0! = c1) {
R0 = c0 & 7.
G0 = (c0 >> 3) & 7;
B0 = (c0 >> 6) & 7;
R1 = c1 & 7.
G1 = (c1 >> 3) & 7;
B1 = (c1 >> 6) & 7;
R1-= constrain(r1-r0,-1,1);
G1-= constrain(g1-g0,-1,1);
B1-= constrain(b1-b0,-1,1);
matrix02 [LED] [1] = (b1 << 6) | (g1 << 3) | R1;
}
annat
matrix02 [LED] [0] = random(0,512); Nya mål lampor
}
}
medan (bigD > =millis())
för (LED = 0; LED < = 2; LED++)
writeLED(LED,matrix02[LED][1]);
bryta;
}

fall 3: / / Log brand
{
för (LED = 0; LED < = 2; LED++) {
om ((sw02&7) == 0) {/ / håll är håll!
C0 = matrix02 [LED] [0];
C1 = matrix02 [LED] [1].
om (c0! = c1) {
R0 = c0 & 7.
G0 = (c0 >> 3) & 7;
B0 = (c0 >> 6) & 7;
R1 = c1 & 7.
G1 = (c1 >> 3) & 7;
B1 = (c1 >> 6) & 7;
R1-= constrain(r1-r0,-1,1);
G1-= constrain(g1-g0,-1,1);
B1-= constrain(b1-b0,-1,1);
matrix02 [LED] [1] = (b1 << 6) | (g1 << 3) | R1;
}
annat {
om (LED == 1) {
R1=random(4,8);
G1 = r1-2;
B1 = 0;
}
annat {
R1 = random(2,7);
G1 = r1-2;
B1 = 0;
}
matrix02 [LED] [0] = (b1 << 6) | (g1 << 3) | R1; Nytt mål lyser röda * gröna
}
}
}
bigD = millis () + 130;
göra {
för (LED = 0; LED < = 2; LED++)
writeLED(LED,matrix02[LED][1]);
}
medan (bigD > =millis());
bryta;
}

fall 4: / / eldflugor
{
om (ffTimer < millis()) {/ / måste vänta för förfluten tid
för (jag = 0; jag < 4; i ++) {
int ff0 = firefly [i];
int ff1 = ff0 >> 8;
ff0 = ff0 & 127;
int ff = ff0 & 7.
om (ff > 0) {/ / Flash på
j = (ff1 >> 2) & 070; Pre-load grön
om ((ff1&3)! = 1) {//A manliga
writeLED(i-1,j);
writeLED(i-1,j);
Firefly [i]--;
fsuitors ++;
}
annat / / en kvinna!
om (fsuitors == 0) {
j + = 3.
writeLED(0,j);
writeLED(1,j);
writeLED(2,j);
writeLED(0,j);
writeLED(1,j);
writeLED(2,j); Honorna Visa en längre, gulare puls
Firefly [i]--;
Jag = 99. Tidigt utträde
}
}
annat {/ / inte flash
om (jag == 1) fsuitors = 0;
j = (ff0 >> 3) & 15;
om (j == 0) //Wait gått ut
Firefly [i] = (firefly [i] & 0xff00) | 0x40 | ((FF1&31) << 1);
annat
Firefly [i]-= 8.
}
}
ffTimer = millis () + 450;
}
bryta;
}

mål 99: / / Test läge...
{
Jag = ((sw02>1) & 1) << 2 | Kontrollera om tap
((sw02>2) & 1) << 6;
writeLED(2,i); Knacka på = röd + håll = blå
bryta;
}

standard:
progMode = 0;
bryta;
}

/*

  • Check för nedtryckt

*/
om (readTouch(2)) {/ / vi se något på pin 2!
om ((sw02&1) == 0) {/ / första gången "runda
digitalWrite(13,HIGH); så vi Visa ngt.
sw02 = 1; Flagga vid beröring
timer02 = millis(); Klockan första touch
}
annat {/ / 1-bitars redan set: vi har varit här förut.
osignerade långa t = millis ()-timer02; men hur länge sedan?
om ((sw02&2) == 2) {/ / titta på "hold" endast om "tryck" är inställt
om (t > 750) {
sw02 = sw02 | 4.
om (t > 8000) progMode = 99.
}
}
annars om (t > = 200) sw02 = sw02 | 2. Ange 'Press', mer differentiering
}
}
annars om (sw02 & & 1) {/ / bearbeta key off
om ((millis()-timer02)>100) / / tillåta att vissa "give'before kalla det avslutas
{
digitalWrite(13,LOW); Visa det
om ((sw02&6) == 2) {//Process "Knacka"
osignerade långa t = millis ()-dttimer02; //
dttimer02 = millis(); Tillåter oss att hålla "Knacka"
om (t < 600) {/ / 2 kranar inom tid gräns (600ms)
sw02 = 0x10; Slå på double tap "
progMode ++; Nästa Program
}
}
annat {
sw02 = sw02 & 0xff00;
timer02 = 0;
}
}
}
}

# definiera lowThreshold 180 / / låg är 180mV
# definiera highThreshold 450 / / 450mV [600] - hud motstånd är 8Meg

booleska readTouch (int pin) {
int i=analogRead(pin);
i=analogRead(PIN); Ignorera 1: a behandlingen
om (jag < lowThreshold) i=analogRead(pin); Brusavvisning
om (jag < lowThreshold) {
digitalWrite(controlPin,HIGH);
om (progMode == 99) writeLED(0,02); Test: oktalt röd
i=analogRead(PIN);
digitalWrite(controlPin,LOW);
om (jag > highThreshold) {
om (progMode == 99) writeLED(0,020); Test: oktalt gul
Return (analogRead(pin) < lowThreshold);
return true;
}
annars returnera falskt;
} / / Test passerade - knappen trycks
annars returnera falskt;
}

#define waitFactor 6 / / ljusstyrka faktor
void writeLED (int LED, int värde) {/ / LED == 0(D7), 1(D6), 2(D5)
värdet är 3bits för r [lsb], g, b
digitalWrite(7-LED,HIGH); Ta med anoden hög
int r = värde & 7.
int g = (värde >> 3) & 7;
int b = (värde >> 6) & 7;

om (r > 0) {
digitalWrite(2,LOW);
delayMicroseconds (waitFactor << r);
}
digitalWrite(2,HIGH);
delayMicroseconds (waitFactor < <(7-r));

om (g > 0) {
digitalWrite(3,LOW);
delayMicroseconds (waitFactor << g);
}
digitalWrite(3,HIGH);
delayMicroseconds (waitFactor < <(7-g));

om (b > 0) {
digitalWrite(4,LOW);
delayMicroseconds (waitFactor << b);
}
digitalWrite(4,HIGH);
delayMicroseconds (waitFactor < <(7-b));

digitalWrite(7-LED,LOW);
}

Se Steg
Relaterade Ämnen

Mini Arduino Multi funktion styrenhet med LCD-skärm

detta Instructable bygger på mini Arduino miljö monitor och mini Arduino EEGEN monitor Instructables.Det kan du styra upp till 4 reläer med tid, temperatur och/eller ljus, ditt sinne, eller vilken sensor du vill använda.Exemplen är prototyper, jag gå...

Arduino humör lampa med hjälp av BlinkM

ThinkM är en ny elektronikföretag som har släppt nya LED-enheter som kan styras från datorn med hjälp av ett enkelt gränssnitt program, och kontakten.I detta Instructable kommer jag att lära dig hur man styr en ThinkM enhet som du kan ha snarare än m...

Hur man gör en Mini Multi Color lampa (enkel version)

någonsin ville ha en liten ficka storlek lampa som kan vara en mild disco ljus för ditt rum som visar ljust av ditt humör? Du kan göra det med mini multi color lampa med enklaste saker någonsin hittats. Fortsätt att läsa...Steg 1: Saker du behöver So...

Böjda kretskort Art: Göra en beröringsfri Touch-Switch LED lampa

med en våg av handen, slå på en USB powered touch-switch LED lampa. Du har inte faktiskt röra sensorn. Det är så känslig, det kommer att aktivera av förekomsten av ett finger en tum eller två bort. Den krets som beskrivs här visas aktivera en LED-lam...

"Enkla" omvandling av metall lampa att använda touch switch

Detta var avsett att vara min post för varje vecka switch utmaningen men det tog 3 veckor för växeln jag beställde på Amazon ska levereras så jag missade tidsfristen men trodde jag skulle gå vidare och publicera det här ändå.Förra sommaren köpte jag...

Touch-Switch med Lm555

Touch Switch kretsen kommer att upptäcka herrelösa spänningar producerad av strömförsörjningsspänningar och elektrostatiska byggs upp i ett rum. Två touch plattor tillhandahålls och motståndet av fingret ändras spänningen på pin 2 eller 6 att växla 5...

Humör lampa med Arduino

Hej! I den här självstudiekursen lär du göra en humör lampa med arduino.Jag vet att du kanske har sett en hel del humör lamp projekt med arduino, men jag inte var mycket nöjda med dem eftersom de alla ändra färg mycket plötsligt. Så jag beslöt att gö...

Morsealfabetet med kapacitiv Touch!

Hejo! Idag kommer jag visa dig hur man gör en kapacitiv touch morsekod thingamajigger! Dess ganska cool och rolig för en grundläggande arduino projekt. Dess ganska lätt och lärande om kapacitiv touch växlar är en väg som tar dig till många ställen. N...

ICStation G003A Touch Switch Sensormodul

Växeln touch jag använder är en ICStation ICSG003A (punkt #3411), som jag tror de tillverkar själva. Styrelsen är etsad med modellnummer samt deras webbadress, gissar att det är en aning "eh.Du kan hitta denna växel på http://www.icstation.com/produc...

ATTiny2313 multi-mode ledde matrisen klockan

Detta är ett multi-mode klocka projekt baserat på attiny2313. Det använder en 8 x 8 led matris som display. med begränsad upplösning visar detta 12 timmars klocka tiden i 6 olika lägen.kretsen sysselsätter rad och kolumn multiplexing för att driva ly...

LED Steampunk lampa med gamla glödlampor

I detta instructable jag ska visa dig hur man gör en LED Steampunk lampa med gamla glödlampor.Jag ville göra en Steampunk lampa av gamla glödlampor för en lång tid men jag var alltid upptagen med andra projekt. Nyligen fick jag slutligen till det gen...

LED-lampa med Sleep Timer

Ljuset spelar en viktig roll i sömn. Starkt ljus hålla oss vakna och dim ljus hjälper oss att få sova. En av de bästa knepen för att få sova är att börja stänga av lampor innan du faktiskt gå till sängs. Genom att gradvis minska mängden ljus, hjälper...

Touch Switch

Växeln som i princip upptäcker touch & därför blir ON & OFF.Steg 1: delarFör Touch Switch vi behöver 4 delar som anges:-1) IRFZ44 (40.. någon IRFZ serien Mosfet) det är en speciell typ av MOSFET som håller sin o/p.2) Tryck på plattan.3) motstånd 4...

Laptop-högtalarsystem med iPod Touch dock

medan på länge familjeresor vi komma med längs våra Netbook eller Laptop med användning som en bärbar underhållningssystem. Oftast ett par hörlurar räcker inte. Jag föredrar också att ha en anständig uppsättning högtalare. Tyvärr högtalarna inbyggda...

LED-lampa med provrör

vi kommer att göra en lampa med lysdioder inuti provröret. Du kan använda lampan på rummet, skrivbord eller för prydnad.Steg 1: Material är:Lysdioder, bit av trä, Switch, batteri, elkabel, flytande silikon, provrör.Först och främst dras form i trä bi...

Soft touch att skapa

OK, vill l Visa dig hur man gör soft touch!Steg 1: kamera Lets go!Jag bestämde för att använda en bit av velo kameran (det är mjuk;).Steg 2: klockan Jag satte den på min klocka. Ser prydligt.Steg 3: termometer Jag använde den också med min termometer...

Lithopane lampa med roterande skugga

Jag är inte ny på instructables men jag tenderar att vara mer av en observatör av alla stora idéer snarare än att presentera en. Men när jag fick reda på ShopBot utmanar också, hur jag skulle vägra-detta är definitivt en tävling jag mycket intressera...

Trä docka figur lampa med iPad - A DIY handledning

internet är en underbar plats.Häromdagen jag bläddrade Twitter för intressant lampa design (inte vi alla gör detta?) och sprang över Colgao lampa från enPieza! studion i Madrid, Spanien. Medan deras lampa är lite mer morbid än min standard heminredni...

Hur man gör en Arduino baserat natten ljus med IR-fjärrkontroll!

Här är en Instructable som visar dig hur man bygger en Arduino baserade natten ljus meden liten infraröd fjärrkontroll kan du bläddra igenom 10 pre set färger, och en random blekningfärg rutin som loopar för evigt.Detta instructable antar du:Har en A...