Etch-a-Sketch - w/Arduino & bearbetning



jag gjorde detta en för att lära sig om bearbetning och hur det integreras med Arduino.

I grund och botten är vad jag har denna:

En Arduino Duemilenova som är inrymt i en gammal bandet Säkerhetsfack. Arduinoen har 2 potentiometrar fäst vid den. En representerar x-axeln och den andra y-axeln koordinater. Jag limmade lite rött VVS värden handtag till krukorna. Som en vänder krukor, går produktionen till analoga stift 0 och 1. Detta mappas till ett värde mellan 0 - 1023 för x- och y-koordinater.

Sedan skickas det som en seriell ström till den bärbara datorn som har en bearbetning skiss kör. Fysiskt finns det en USB-kabel ansluter Arduino och den bärbara datorn.

Denna skiss kartor 0-1023 till en position på skärmen och tomter en poäng där.

MEN saker är inte så enkelt för detta projekt.

Jag la 3 växlar till Arduino
1. - att tillåta ritningen skall äga rum. Genom att vrida detta off, kan man flytta den punkt där ritning börjar. Skisser kan separeras.

2. att rensa skärmen. Måste vara försiktig när du slår denna växel som det kommer att radera skärmen.

3. för att möjliggöra en förändring av färg. En tabell över färgval kommer upp. Genom att trycka på rätt knapp på tangentbordet, kan man ändra färg.

Var och en av dessa växlar skickar en unik karaktär i den seriella strömmen när de aktiveras.

Bearbetning skissen också ser ut för dessa tecken och reagerar därefter.

Också lekte jag med skärmstorlek för min laptop som orsakade några kod förändringar.

Koden har jag använt är nedan: första Arduino koden och sedan bearbetning koden. Både Arduino och Processinmg kod började med en kopia från någon annan som jag erkänner i kommentarerna. Ardiuno är ganska enkel med krukorna kommer att analoga stift 0 och 1 och varje switch går till en digital pin, antingen 3,5 eller 7.

Bearbetning koden är kraftigt modifierad av mig att få färger alternativ.

Arduino:

/*
* Etch-a-Sketch_wswitches
*
* Ett enkelt program att läsa två potentiometrar ansluten till analoga 0 och 1, tolka dem som ett ordnat par (x, y)
* och skicka dem via seriell till datorn
*
* baserat på grafen: http://www.arduino.cc/en/Tutorial/Graph
* 7/2011 - uppdaterad av cdubois
*/

#include < Stdio.h >

för krukor
int xCoord;
int yCoord;
char coords [10].

för växlar
variabler för input pin och styra LED
input 7 är att rensa skärmen
ingång 3 är att börja rita igen
ingång 5 är att ändra färg
int digitalInput3 = 3; Rita
int digitalInput5 = 5; ändra färg
int digitalInput7 = 7. klart
int LEDpin = 13.
variabel för att lagra värdet
int value3 = "0";
int value5 = "0";
int värde7 = "0";

void setup()
{
deklarera pin lägen

pinMode(digitalInput3,OUTPUT);
pinMode(digitalInput5,OUTPUT);
pinMode(digitalInput7,OUTPUT);
pinMode(LEDpin,OUTPUT);

Serial.BEGIN(9600);
}

void loop()
{
läsa av värdet på digital ingång
value3 = digitalRead(3);

skriva detta värde till kontroll LED stift
digitalWrite(LEDpin,value3);

Växla till Rita kontrolleras
om value6 är hög då skicka bokstaven "Y" annat send "N"
Serial.Print(value3);
om (value3) {
Serial.Print ("Y");
}
annat
{
Serial.Print "N,".
}

switch för att ändra färg kontrolleras
om value6 är hög då skicka bokstaven "E" annat send "N"

value5 = digitalRead(5);
om (value5) {
Serial.Print "E,".
}
annat
{
Serial.Print "N,".
}

värde7 = digitalRead(7);
switch att rensa skärmen kontrolleras
Serial.Print (värde7);
om (värde7) {
Serial.Print ("C");
}
annat
{
Serial.Print ("L");
}

xCoord = analogRead(0);
yCoord = analogRead(1);
sprintf (coords, "%d, %d", xCoord, yCoord);
Serial.println(coords);

Delay(5);

}

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

Bearbetning av kod

Etch-a-Sketch10
av Trevor Shannon
//
utifrån diagrammet
av David A. Mellis
ändrat av cdubois 2011-7

import processing.serial.*;

Seriell port;
Sträng buff = "";
String buff1 = "";
String buff2 = "";
String buff0 = "";
String clearScreen = "NO";
String stopDraw = "NO";
String newColor = "NO";
Sträng moveit = "NO";
String stopit = "NO";
Sträng firsttime = "Ja";
char c = 'H'; test för clearing
char d = 'H'; test för ritning

int x = 0;
int y = 0;

int oldx = 0;
int oldy = 0;
int en = 0;

heltal index = 0;
int NEWLINE = 10;

Lagra de senaste 10 värden fick så vi kan diagram dem.
int [] valuesx = nya int [10].
int [] valuesy = nya int [10].

variabler för färg
färg backg = färg (0, 0, 0);
färg rader = color(348,90,90);

void setup()
{
size(1023,512);
frameRate(10);
Port = ny följetong (här, "COM5", 9600);

Om du vet namnet på den port som används av Arduino styrelsen, du
kan ange det direkt så här.
Port = ny följetong (här, "COM1", 9600);

Background(backg);
}

// ----------------------------------------------------------
// ------------------------------------------------------------

void draw()
{

Drawlines();
movecursor();
selectcol();

checkswitches();

samtidigt (port.available() > 0)
{
serialEvent(port.read());
}
}

// ----------------------------------------------------------
Funktioner
// =========================================================
// ===========================================================

void selectcol()
{
om (newColor == "Ja") {
PFont teckensnitt;
Font = loadFont("Serif.plain-16.vlw");
textFont(font);
Fill(255,255,255);
text ("Välj en färg", 25, 25);
Fill(348,90,90);
text ("röd - tryck R", 25, 45);

Fill(237,151,12);
text ("Orange - tryck på O", 25, 65);

Fill(236,237,12);
text ("Gula - tryck Y", 25, 85);

Fill(12,237,28);
text ("Grön - tryck på G", 25, 105);

Fill(12,47,237);
text ("Blå - tryck B", 25, 125);
}
annat {
PFont teckensnitt;
Font = loadFont("Serif.plain-16.vlw");
textFont(font);
Fill(0,0,0);
text ("Välj en färg", 25, 25);
text ("röd - tryck R", 25, 45);
text ("Orange - tryck på O", 25, 65);
text ("Gula - tryck Y", 25, 85);
text ("Grön - tryck på G", 25, 105);
text ("Blå - tryck B", 25, 125);
}

}
// ============================================================
// ============================================================
// ============================================================

// ============================================================
// ============================================================
// ============================================================
nu har vänt krukor så vill rita linjer
void drawlines() {
om (stopit == "Nej") {
för (int jag = 0; jag < 9; i ++) {
stroke(lines);
strokeWeight(4);
Smooth();

Point(x,y);
linje (1023 - valuesx [i], 512 - valuesy [i], 1023-valuesx [jag + 1], 512 - valuesy [jag + 1]);
}
}
}

// ===============================================================
// ==============================================================

void serialEvent(int serial)
{
om (serial! = NEWLINE) {
Lagra alla tecken på raden.
buff += char(serial);
}
annat {
I slutet av varje rad markeras av två tecken, en vagn
återvändande och en ny rad. Vi är här eftersom vi har fått en ny rad,
men vi måste fortfarande remsor av vagnretur.
buff = buff.substring (0, buff.length()-1);

String [] lista = split (buff, ',');
läsa strängen
Om knappen klar skärm var nere, kommer att ett "C" vara i
4. teckenpositionen
char c = buff.charAt(4);
om inte längre vill rita, en "N" i första position
char d = buff.charAt(0);
om vill radera, ett "E" kommer att vara i 2: a röding position
char e = buff.charAt(2);

buff1 = lista [3].
buff2 = lista [4].

har sett en N så måste sluta ritning
om (d == 'N') {

stopDraw = "Ja";

}
annat
{
stopDraw = "NO";
}
Rensa skärmen
har sett en C så måste rensa så snart som möjligt
om (c == "C") {

clearScreen = "Ja";

}
annat
{
clearScreen = "NO";
}

ändra färger
har sett ett E så behöva lägga text i hörnet
och vänta för val av
om (e == "E") {

newColor = "Ja";

}
annat
{
newColor = "NO";
}

Tolka sträng till ett heltal. Vi delar med 4 eftersom
analoga ingångar gå från 0 till 1023 medan färgerna i bearbetning
bara gå från 0 till 255.
x = Integer.parseInt (buff1) / 1;
y = Integer.parseInt (buff2) / 2;

println(x);
println(y);

Rensa värdet i "buff"
buff = "";
skapa en array med tio punkter för linjen
för (int jag = 0; jag < 9; i ++)
{
valuesx [i] = valuesx [jag + 1];
valuesy [i] = valuesy [jag + 1];
}

Lägga till de mottagna värdet i arrayen.
valuesx [9] = x;
valuesy [9] = y;

}
}

// ================================================
// -------------------------------------------------
void movecursor()
{
vill flytta till annan plats
så vill flytta punkt men vill att det ska försvinna som det rör sig
om ((stopit == "Ja") & & (moveit == "Ja")) {
Radera gamla punkt
IF(a >0) {
stroke(backg);

punkt (oldx, oldy);
}

för (int jag = 0; jag < 9; i ++) {
stroke(255,255,255);
strokeWeight(4);
punkt (1023 - x, 512 - y);
Spara plats att raderas nästa gång
//

oldx = 1023 - x;
oldy = 512 - y;

en = a + 1;

}
}

// ================================================
// -------------------------------------------------
void checkswitches()
{
nu är det dags att testa switch ändringar

om ((stopDraw == "Ja") & & (clearScreen == "Ja")) {
stopit = "Ja";
Background(0);
}

Kunde få här om stopDraw är påslagen men inte clearScreen
dvs bara vill flytta den positioneringen utan ritning

om ((stopDraw == "Ja") & & (clearScreen == "Nej")) {
stopit = "Ja";
Moveit = "Ja";
}

om stopdraw inte bytte, sedan händer ingenting
om (stopDraw == "Nej") {
stopit = "NO";
Moveit = "NO";

}

}

// ================================================
// -------------------------------------------------
// ================================================
// -------------------------------------------------
void keyPressed()
{

röd
om (nyckel == "r" || nyckel == "R") {
rader = color(348,90,90);
}

Orange
om (nyckel == "o ' || nyckel ==" o-) {
rader = color(237,151,12);
}

gul
om (nyckel == "y" || nyckel == "Y") {
rader = color(236,237,12);
}

grön
om (nyckel == "g" || nyckel == "G") {
rader = color(12,237,28);
}
blå
om (nyckel == "b" || nyckel == "B") {
rader = color(12,47,237);
}

}

En kort video av det i handling följer:

Relaterade Ämnen

Etch A Sketch laserskärare baserade Arduino.

i detta projekt tar jag en Arduino Mini Pro ansluta den till en anpassad gjort Etch A Sketch panel och använda den för att styra en Blacknose laser cutter. Resultatet är timmar galen laser skärning roligt, som vi kommer att ta runt de flesta av UK Ma...

Arduino Etch-A-Sketch Clock

jag har sett olika Arduino drivs Etch-A-Sketch klockor på nätet, men ingen med instruktioner (är det någon slags hemlig? Någon planerar på att göra det rika på den globala marknaden för Etch-A-Sketch klockan?). Jag har använt Arduino, men aldrig anvä...

Arduino kontrollerade Pocket Etch A Sketch slumpmässig promenad simulering

detta projekt är resultatet av Wal-Mart utcheckning lane impulsköp av fickformat Etch A Sketch för $3,99.Två stegmotorer Etch A Sketch knopp drivaxlar och en servomotor vänder Etch A Sketch om du vill radera skärmen. Med hjälp av Arduino IDE Serial M...

Virtuella Etch A Sketch

Etch A Sketch: berömda, kreativ och unik. Tyvärr har jag ingen aning Vart är en från min barndom, så jag bestämde mig att göra min egen virtuella! Kontrollera ut (och min hemska ritning färdigheter) nedan.Denna Etch A Sketch är ganska likt originalet...

SK3TCH - balans ombord kontrollerade Etch-A-Sketch

SK3TCHHur man använder en Wii Balance Board för att styra en Etch-A-SketchEndast WindowsInnehåll:1. intro och reservdelar2. växlar3. bygga ramen4. montage5. ansluta WiiMote och Balance Board6. GlovePIE7. Arduino + motorstyrning8. bearbetning9. kör de...

$100 väggmålning ritning robot (fungerar även som en gigantisk etch-a-sketch)

på hacka-en-dag!Vad jag gillar med robotar är att du kan göra en sak som gör andra saker. Så meta! Den använder gcode Rita någon bild du, eller du kan köra runt som en etch-a-sketch. Du kan skala denna robot upp till nästan alla storlekar. Versionen...

NES kontrollerade Etch-A-Sketch

Ritning på en etch-a-sketch med en original Nintendo controller. Jag ansluten etch-a-sketch vreden till stegmotorer, som sedan kontrolleras av en Arduino mikrokontroller. Arduino programmet skrev jag tar signaler från NES controller och skickar dem s...

Etch-a-Sketch LOGO - EASiLOGO

Vad får du om du korsar en sköldpadda med en Etch-a-Sketch?Etch-A-Sketch interaktiva LOGO - "EASiLOGO"!Detta är den första programmeringsspråk som utformats speciellt för världen berömda leksaken från Ohio Arts - Etch-a-Sketch. Om du aldrig sett...

VHDL Etch-a-Sketch

För våra CPE 133 slutliga projektet på Cal Poly, San Luis Obispo, vi byggde ett Etch-a-Sketch med VHDL på Diligant nexys 3 styrelsen. En nexys 3 styrelse som kan bygga logiska kretsar utan att oroa om komplicerade externa gränssnitt, och mer avancera...

Electroluminescent Etch A Sketch

Hi, aftergetting några electroluminescent grejer för en övning för http://hci.rwth-aachen.de/mcp1314 att leka, det är mitt (första) försöka bygga en elektroluminiscent EAS (och göra en Instructable:-):Jag använde:-en Etch A Sketch (ganska självklart...

Etch-i-Sketch

"Vi inte kan konkurrera med det!"--Steve Jobs('s doppleganger)"Zune? Vad tänkte vi? Detta är vad vi behöver. "--Bill Gates('s likely thoughts)"Men behöver en strömkälla ruiner poängen..."--Ohio Art('s worthless opinion)Trött...

Avsnitt 15: Hacka en Etch-A-Sketch att rita cirklar

vi på dumma uppfinningar älskar Etch-A-Sketch, men vi saknar konstnärlig talang för att rita något bra på klassiska leksaken.Så kom vi fram till ett enkelt och billigt sätt att hacka Etch-A-Sketch så att inte bara kan du rita det gamla sättet, men du...

IPad Etch-A-Sketch ringer upp

Få tillbaka den gamla goda tiden med en DIY Etch-A-Sketch ratten som fungerar på en Tablet PC eller smarta telefon! Detta instructable kommer att lära dig hur man gör en fysisk ratten för din enhet. Det är särskilt utformade för att se och agera som...

LED Etch-a-Sketch

min LED Etch-a-Sketch är min första helt färdiga elektronik projekt. Jag använder fyra 8 x 8 ledde matriser för att göra en 16 x 16 ledde matrisen ritning yta. Två potentiometrar tillåter indata från användaren för kolumn- och rörelse, medan två tilt...

LED Etch-a-Sketch (Full Instructable)

min LED Etch-a-Sketch är min första helt färdiga elektronik projekt. När jag först fick in elektronik jag letade efter ett projekt att börja med och medan du surfar på Sparkfun.com jag kom över ledde matriser och jag visste att jag ville arbeta med d...

Hur man ställa in A Permanent Etch A Sketch (som proffsen)

som an Etch A Sketchist mig själv, jag känner att det värsta någon EAS artist kan göra för sig själva är att alltför få knutna till en av deras "skiss Works". Jag har sett detta hända innan och konstnärer har blivit galen försöker skydda sina ko...

Etch-a-sketch skapelser

jag nyligen hittade en etch-a-sketch i min garderob och blev intresserad i ritningen med det. Jag drar mestadels bilder från böcker medan jag sitter i engelska klass eller bilder från affischer i andra klasser. Det är ett bra sätt att använda din tid...

3D luft mus | Arduino + bearbetning

3D luft mus | Arduino + bearbetningJag är en industriell design student, och förra året som en del av en kurs som heter "Teknik som RAW materiel" Jag byggde detta projekt som mitt sista arbete.Jag arbetar för mesta med SolidWorks, ett CAD-progra...

Fönstret måleri Robot (arduino, bearbetning, accelerometer)

idén till projektet kom från en av mina favorit "ibles: polargraph. Jag älskade ritformat och tänkte hur coolt det vore att göra detta på sidan av en byggnad? Tyvärr utmaningarna till att inrätta en sådan stor polargraph på en student budget drivit m...