Sfeerverlichting van Computer - met behulp van een Arduino met NeoPixel strip (1 / 1 stap)

Stap 1: De Code


Het echte vlees- en beendermeel van dit project is de code die de atmosfeerverlichting mogelijk maakt. Een tijdje terug vond ik wat code door Rajarshi Roy die nam gemiddelde RGB-waarden van een screenshot van het computerscherm (met behulp van verwerking) moet worden gebruikt met een rgb led. Ik heb vervolgens de code om te scannen de screenshot in 10 secties (192 x 1080 resolutie) gewijzigd. Zodra ik had de gemiddelde waarde van elke sectie kon ik dan voor de uitvoer van de waarden naar de arduino, en vervolgens naar de NeoPixel strip. Aangezien er 30 geleid is te werken, ik toegewezen 3 leidde de voor elke sectie van het scherm.

Ik experimenteerde met meer secties, maar meer dan 10 veroorzaakt teveel cpu-gebruik.

Kort daarna besloot ik te implementeren TouchOSC in het programma om te zorgen voor controle van de iPhone. Die code is niet opgenomen in dit instructable, maar als u e-mail me (cgmalantonio ik zal graag sturen u de code. Deze code voorziet in een knevel op de sfeerverlichting, evenals de RGB schuiven en een XY touchpad voor het genereren van nog meer kleuren.

Nou, laten we beginnen!

Eerst hebben we de Arduino-code, dit is verantwoordelijk voor het nemen van de RGB-waarden van de Processing Schets en het uitvoeren van deze waarden aan de NeoPixel strook.

--------------------------------------------------------------------------------------------
--------------------------------Arduino Sketch----------------------------------------
--------------------------------------------------------------------------------------------

Ambi: AmbientNeoPixel Arduino Sketch
Gemaakt door: Cory Malantonio

#include < Adafruit_NeoPixel.h >
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel (60, PIN, NEO_GRB + NEO_KHZ800);

int r [11]; matrix voor elke kleurwaarde
int g [11];
int b [11];

VOID Setup {}
Serial.begin(9600);
strip.begin(); prep de neopixel
strip.show();
}

void loop {}

Als (Serial.available() > = 31) {}
Als (Serial.read() == 0xff) {}
voor (int x = 1 x < 11; x ++) {}
r [x] = Serial.read(); Lees in de waarden van verwerking
g [x] = Serial.read(); in dezelfde volgorde wij hen gezonden
b [x] = Serial.read();

r [x] = beperken (r [x], 0, 255); net incase enige waarden slip weg
g [x] = beperken (g [x], 0, 255);
b [x] = beperken (b [x], 0, 255);

}
}
}

int Xval = 1; tellen tot 30
int Yval = 2; tijdens het laden van de RGB-waarden
int Zval = 3; in 3 geleid is tegelijk

voor (int z = 1; z < 11; z ++) {}

strip.setPixelColor (Xval, r [z], g [z], b[z]);
strip.setPixelColor (Yval, r [z], g [z], b[z]);
strip.setPixelColor (Zval, r [z], g [z], b[z]);

Xval = Xval + 3;
Yval = Yval + 3;
Zval = Zval + 3;
}

strip.show(); uitgang naar de neopixel
vertraging(20); voor veiligheid
}

--------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------

Hier is de schets van de verwerking,
de enige echte aanpassing zul je te maken zullen de lijn
poort = nieuwe Serial (dit, Serial.list() [#], 9600;

de # verwijst naar het nummer van de usb-apparaat dat de arduino is aangesloten.
Ik stel 0, dan 1, dan 2, enz te proberen tot u vindt die u gebruikt.

--------------------------------------------------------------------------------------------
--------------------------------Processing Sketch-----------------------------------
--------------------------------------------------------------------------------------------
bewerken: Ik kreeg een grote e-mail vragend over het wijzigen van de resolutie over de processing schets.
Sindsdien veranderd heb ik uit de schets van de verwerking met een meer geschikt om te bewerken (zonder om te duiken in de code).
--------------------------------------------------------------------------------------------

/ * Ambi2: AmbientNeoPixel Processing Schets
** Gecreëerd door: Cory Malantonio
** ambiArray is gebaseerd op een ontwerp door Rajarshi Roy
*/

importeren van cc.arduino.*;
importeren van java.awt.Robot;
importeren van java.awt.AWTException;
importeren van java.awt.event.InputEvent;
importeren van java.awt.image.BufferedImage;
importeren van java.awt.Rectangle;
importeren van java.awt.Dimension;
importeren van processing.serial.*;

---Instellen resolutie hier---/ /
int resX = 1920;
int resY = 1080;
//-------------------------------//

int sectW = resX / 10;  Sectiebreedte voor de 10 secties
int SectRx = sectW / 4; Sectie resolutie voor x
int SectRy = resY / 4;  Sectie resolutie voor y

Seriële poort;
Robot GrabRGBval;

VOID Setup
{
poort = nieuwe Serial (dit, Serial.list() [2], 9600);
Serial.List() [#], # = USB-apparaatnummer

Probeer
{
GrabRGBval = nieuwe Robot();
}
vangst (AWTException e)
{
println ("Robot klasse niet ondersteund door uw systeem!");
Exit();
}

grootte (200, 200);
Background(0);
noFill();
}

VOID draw()
{
int pixel;

zweven [] rA = nieuwe float [11];
[] gA zweven = nieuwe float [11];
float [] bA = nieuwe float [11];
int [] reso = nieuwe int [11];

voor (int Ar = 1; AR < 11; AR++) {//load de resoluties in de array
Reso [Ar] = sectW * Ar;              192 is 1/10de van de resolutie 1920
}

zweven r = 0;
zweven van g = 0;
zweven b = 0;
Reso [0] = 0;

Screenshot van BufferedImage = GrabRGBval.createScreenCapture (nieuwe rechthoek (nieuwe dimensie (resX, resY)));

voor (int LED = 1; LED < 11; LED++) {}
int x = 0;
int y = 0;

Reso matrix stappen in 10ths van de resolutie van 1920, beginnend bij 0
voor (x = reso [LED-1]; x < reso [LED]; x = x + 4) {//"x + 4" is overslaan van pixels
voor (y = 0; y < resY; y = y + 4) {/ / om te helpen deze sneller wordt uitgevoerd
pixel = screenshot.getRGB (x, y);
r = r+(int) (255 & (pixel >> 16));
g = g+(int) (255 & (pixel >> 8));
b = b+(int) (255 & (pixel));
}
}

r=r/(SectRx*SectRy); 48 is 1/4e elke 10e van het scherm. Hierboven zijn we het overslaan van pixels
g=g/(SectRx*SectRy); We zitten met 1/4 de pixels.
b=b/(SectRx*SectRy); 270 is 1/4 van de resolutie 1080
rA [LED] = r;
gA [LED] = g;
bA [LED] = b;

}

Port.write(0xFF); schrijven marker, arduino is op zoek naar dit
voor (int Br = 1; BR < 11; BR++) {}
Port.write((byte)(RA[br]));
Port.write((byte)(gA[br]));
Port.write((byte)(BA[br]));
}

delay(10); vertraging voor veiligheid

voor (int kegel = 1; kegel < 11; kegel ++) {}
Fill(0);
beroerte (rA [kegel], gA [kegel], bA[cOne]);
rect ((cOne-1) * 20, 0, kegel * 20, 200);
vulling (rA [kegel], gA [kegel], bA[cOne]);
rect ((cOne-1) * 20, 0, kegel * 20, 200);
}
}

Gerelateerde Artikelen

Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

dit Instructable zal u tonen hoe te bouwen van uw eigen Web aangesloten Robot (met behulp van een Arduino micro-controller en de Asus eee pc).Waarom zou u een Web aangesloten Robot willen? Om mee te spelen natuurlijk. Rijd uw robot van hele kamer of
Beheersing van een Arduino Board met behulp van een infrarood afstandsbediening

Beheersing van een Arduino Board met behulp van een infrarood afstandsbediening

I-IntroductionHallo iedereen, mijn naam is Noreddine Kessa, ik ben een liefhebber van de elektronica.  Ik had plezier dit weekend spelen met mijn nieuwe speeltje, Arduino ATmega328 DIY Kit die ik kreeg op eBay, en ik zou graag de vreugde delen met ie
LED licht met behulp van een Arduino

LED licht met behulp van een Arduino

Een Arduino is een open-source van de computerhardware, open-source software en microcontroller-gebaseerde kits voor het bouwen van digitale apparaten en interactieve objecten die kunnen voelen en aansturen van fysieke apparaten. Er zijn verschillend
Speel de Fransen kan kan met behulp van een Arduino en de zoemer

Speel de Fransen kan kan met behulp van een Arduino en de zoemer

Bonjour!Controleer je Arduino spelen de Franse kan kan met behulp van een zoemer. Geen Tang. Geen branden. Het is zo ongecompliceerd is zo schandalig de kan houdt.Dit instructable heeft betrekking op één of andere info inleidende elektronica, en rich
Met behulp van een Arduino en Python plot/opslaan gegevens

Met behulp van een Arduino en Python plot/opslaan gegevens

een snelle en gemakkelijke manier om te zien (en sla) gegevens genomen met behulp van een Arduino op uw computer.(Opmerking: niet de meest robuuste methode, maar het werkt goed genoeg)Materialen:-Arduino (im ' using een Uno)-Computer (ik heb een Dell
Met behulp van een Arduino te laden van een DS lite

Met behulp van een Arduino te laden van een DS lite

Dit instructable is voor het opladen van een ds lite met behulp van een Arduino en twee draden. Dit is ook mijn eerste instructable, zodat het wellicht niet zo goed als mogelijk. :)BERICHT: Ik ben niet verantwoordelijk voor eventuele schade aan je ds
Joystick gecontroleerd robotarm met behulp van een Arduino

Joystick gecontroleerd robotarm met behulp van een Arduino

Doel en beschrijving van deze handleidingDit instructable is een hand-in voor een schoolproject die we gemaakt. Het doel van dit project was een robot-arm besturingselement met thumbsticks maken. Moesten we gebruik maken van een Arduino Uno voor het
Androino! Controle van een Arduino vanaf uw Android-apparaat met behulp van een goedkope bluetooth-module.

Androino! Controle van een Arduino vanaf uw Android-apparaat met behulp van een goedkope bluetooth-module.

Dit instructable toont je hoe om te lezen van sensor-waardes van een Arduino met uw Androïde apparaat met behulp van een seriële goedkoop bluetooth-apparaat dat u voor onder $10 op dealextreme of ebay bestellen kunt.In het volgende voorbeeld gebruikt
RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

ik geniet van zowel Geocaching en elektronica en heb een paar van elektronische puzzel caches met behulp van een Arduino.Mijn nieuwste creatie (met de hulp van een collega cacher voor de code) is met behulp van een Arduino en RFID lezer te maken van
Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Vandaag, we zullen worden ter illustratie van hoe maak je een enkele LED knipperen met behulp van een Arduino Uno-board. Door elke stap te volgen, zal je dit doel bereiken.U zal het volgende nodig:Een Arduino BoardBrood bordUSB-connectorkabelEEN LED3
Gitaar Tuner voor blinden (met behulp van een Arduino)

Gitaar Tuner voor blinden (met behulp van een Arduino)

het wijzigen van een gitaar tuner zodat het kan worden gebruikt door een blinde persoonDeze build maakt gebruik van een Arduino Pro mini microcontroller, (alle code wordt verstrekt).Dit project werd uitgevoerd voor het goede doel Remap, waarmee op ma
Hoe tweet van een Arduino met behulp van de wifi-Shield

Hoe tweet van een Arduino met behulp van de wifi-Shield

he, ik ben een grote fan van Instructables. Ik heb het consequent gebruikt voor de afgelopen 3 jaar en nu is het tijd voor mij om te schrijven een zelf.Hier gaan we. Dit instructable is voor degenen die willen een levenloos voorwerp tweet automatisch
Programmeren van een Arduino met behulp van BeagleBone, zonder USB

Programmeren van een Arduino met behulp van BeagleBone, zonder USB

als je gezien mijn BeagleBone/Arduino seriële communicatie gids, u kan hebben gewacht voor deze!  Als u het nog niet gezien, ga eerst lezen omdat we 100% Voortbouwend op dat kader.  Ik ga niet herhalen die instructie hier.Het einddoel is om te kunnen
Grondbeginselen van het omzetten van uw externe controle voertuig in een autonoom systeem (Drone) met behulp van een Arduino

Grondbeginselen van het omzetten van uw externe controle voertuig in een autonoom systeem (Drone) met behulp van een Arduino

ik begon dit project met als doel goedkoop draaien mijn RC helikopter in iets van een UAV of althans te passen sommige sensoren aan het verminderen van aanvaringen en andere "mis haps."Nu helaas aan het begin van het project misrekend ik mijn kl
Indringende en een PCB met behulp van een Arduino-Based CNC frezen

Indringende en een PCB met behulp van een Arduino-Based CNC frezen

Tot onlangs PCB sonderen met behulp van een Arduino was gebaseerde CNC machine maar een loutere droom. Dankzij de mensen van Chilipeppr.com we nu hebben gebaseerde een bankje van de web-gebaseerde tool voor al onze Arduino CNC producten. Het beste de