Etch-a-Sketch - w/Arduino & Verarbeitung


ich habe diese zu helfen, erfahren Sie mehr über Verarbeitung und wie es mit Arduino integriert.

Im Grunde, was ich habe, ist dies:

Ein Arduino Duemilenova welches in einem alten Band-Schließfach untergebracht ist.   Der Arduino hat 2 Potentiometer verbunden.  Eine darstellt, der x-Achse und der y-Achse andererseits Koordinaten.   Ich klebte einige rote Sanitär Werte Griffe an den Töpfen.  Wie man die Töpfe dreht, geht der Ausgang auf die analogen Pins 0 und 1.  Dies ist abgebildet auf einen Wert zwischen 0 - 1023 für x und y Koordinaten.

Dann wird es an den Laptop als serieller Datenstrom gesendet, eine Verarbeitung Skizze ausgeführt hat.  Körperlich ist ein USB-Kabel für den Anschluss der Arduino und den Laptop.

Diese Skizze Karten 0-1023 an eine Position auf dem Bildschirm und Grundstücke einen Punkt gibt.

ABER die Dinge sind nicht so einfach für dieses Projekt;

Ich habe 3 schaltet auf dem Arduino
(1) - auf die Zeichnung stattfinden zu lassen.  Dreht man diese aus, kann man den Punkt bewegen, wo Zeichnung beginnen wird.  Skizzen können getrennt werden.

(2) auf den Bildschirm zu löschen.  Muss aufpassen, wenn dieser Schalter zu schlagen, wie es der Bildschirm gelöscht werden.

(3), um eine Änderung der Farbe zu ermöglichen.  Eine Tabelle der Farbauswahl aufkommt. Mit der richtigen Taste auf der Tastatur kann man die Farbe ändern.

Jeder dieser Schalter sendet einen einzigartigen Charakter in der seriellen Datenstrom, wenn sie aktiviert sind.

Auch die Verarbeitung Skizze sieht für diese Zeichen und reagiert entsprechend.

Auch spielte ich mit der Bildschirmgröße für meinen Laptop, die einige Änderungen am Code verursacht.

Der Code, die ich verwendet habe ist unten: erste Arduino Code und dann die Verarbeitungscode.  Der Arduino und Processinmg Code begann mit einer Kopie von einer anderen Person die ich in den Kommentaren anerkennen.   Die Ardiuno ist ziemlich einfach, mit den Töpfen zu analogen Pins 0 und 1 und jeder Schalter geht an einen digitalen Stift 3,5 oder 7.

Die Verarbeitungscode wird durch mich, um die Farboptionen stark modifiziert.

Arduino:

/*
* Etch-a-Sketch_wswitches
*
* Ein einfaches Programm zu lesen zwei Potentiometer an analoge 0 und 1 angeschlossen, interpretieren sie als geordnetes paar (X, y)
* und über serielle Schnittstelle an den Computer senden
*
* basierend auf Grafik: http://www.arduino.cc/en/Tutorial/Graph
* 7/2011 - modifiziert von cdubois
*/

#include < Stdio.h >

für Töpfe
Int xCoord;
Int yCoord;
Char Coords [10];

für Schalter
Variablen für die Eingabe pin und Steuern LED
Eingang 7 ist Bildschirm löschen
Eingang 3 soll beginnen erneut gezeichnet
Eingang 5 ist es, Farbe zu ändern
Int digitalInput3 = 3;  zeichnen
Int digitalInput5 = 5;  Farbe ändern
Int digitalInput7 = 7;  klar
Int-LEDpin = 13;
Variable zum Speichern des Werts
Int Wert3 = '0';
Int-Wert5 = '0';
Int value7 = '0';

void setup()
{
Pin-Modi zu erklären

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

Serial.Begin(9600);
}

void loop()
{
Lesen Sie den Wert auf Digitaleingang
Wert3 = digitalRead(3);

Schreiben Sie diesen Wert an die Kontrolle LED pin
digitalWrite(LEDpin,value3);

Schalter zeichnen wird überprüft
Wenn die Wert6 hoch ist dann schicken Sie die Buchstaben "Y" anderes senden "N"
Serial.Print(Value3);
Wenn (Wert3) {}
Serial.Print ("Y");
}
anderes
{
Serial.Print ("N");
}

Schalter zu verfärben wird geprüft
Wenn die Wert6 hoch ist dann schicken Sie die Buchstaben "E" anderes senden "N"

Wert5 = digitalRead(5);
Wenn (Wert5) {}
Serial.Print ("E");
}
anderes
{
Serial.Print ("N");
}

value7 = digitalRead(7);
Umstellung auf Bildschirm zu löschen wird überprüft
Serial.Print (value7);
Wenn (value7) {}
Serial.Print ("C");
}
anderes
{
Serial.Print ("L");
}


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


Delay(5);

}

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

Verarbeitungscode

Etch-a-Sketch10
von Trevor Shannon
//
anhand der Grafik
von David A. Mellis
geändert von Cdubois 7/2011

Import processing.serial.*;

Serielle Schnittstelle;
Buff String = "";
String buff1 = "";
String buff2 = "";
String buff0 = "";
String ClearScreen = "NO";
String StopDraw = "NO";
NewColor String = "NO";
Moveit String = "NO";
Stopit String = "NO";
String Geldmarkterstmals = "YES";
Char c = 'H';  Test für das clearing
Char d = 'H'; Test für Zeichnung

Int X = 0;
Int y = 0;

Int Oldx = 0;
oldy Int = 0;
Int ein = 0;

Int Index = 0;
Int NEWLINE = 10;

Speichern Sie die letzten 10 Werte erhalten, so dass wir ihnen grafisch darstellen können.
Int [] Valuesx = new Int [10];
Int [] Valuesy = new Int [10];

Variablen für Farbe
Backg Farbe = Farbe (0, 0, 0);
farbige Linien = color(348,90,90);

void setup()
{
Size(1023,512);
frameRate(10);
Port = neue Seriennummer (dieser, "COM5", 9600);

Wenn Sie den Namen des Ports verwendet durch das Arduino-Board kennen Sie
können sie direkt wie folgt angeben.
Port = neue Seriennummer (dieser, "COM1", 9600);

Background(Backg);
}

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

void draw()
{

drawlines();
movecursor();
selectcol();

checkswitches();

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

// ----------------------------------------------------------
Funktionen
// =========================================================
// ===========================================================

void selectcol()
{
Wenn (NewColor == "YES") {}
PFont Schrift;
Schriftart = loadFont("Serif.plain-16.vlw");
textFont(font);
Fill(255,255,255);
Text ("wählen Sie eine Farbe", 25, 25);
Fill(348,90,90);
Text ("rot - Taste R", 25, 45);

Fill(237,151,12);
Text ("Orange - press O", 25, 65);

Fill(236,237,12);
Text ("Yellow - Y betätigen", 25, 85);

Fill(12,237,28);
Text ("Grün - Presse G", 25, 105);

Fill(12,47,237);
Text ("Blue - Taste B", 25, 125);
}
Else {}
PFont Schrift;
Schriftart = loadFont("Serif.plain-16.vlw");
textFont(font);
Fill(0,0,0);
Text ("wählen Sie eine Farbe", 25, 25);
Text ("rot - Taste R", 25, 45);
Text ("Orange - press O", 25, 65);
Text ("Yellow - Y betätigen", 25, 85);
Text ("Grün - Presse G", 25, 105);
Text ("Blue - Taste B", 25, 125);
}


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

// ============================================================
// ============================================================
// ============================================================
Jetzt haben Sie sich Töpfe so Linien zeichnen möchten
void drawlines() {}
Wenn (Stopit == "Nein") {}
für (Int ich = 0; ich < 9; i ++) {}
Stroke(Lines);
strokeWeight(4);
Smooth();

Point(x,y);
Linie (1023 - Valuesx [i], 512 - Valuesy [i], 1023-Valuesx [i + 1], 512 - Valuesy [i + 1]);
}
}
}

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

void serialEvent(int serial)
{
Wenn (serielle! = Zeilenumbruch) {}
Speichern Sie alle Zeichen in der Zeile.
Buff += char(serial);
}
Else {}
Am Ende jeder Zeile zeichnet sich durch zwei Zeichen, ein Wagen
Rückkehr und einen Zeilenumbruch.  Wir sind hier, weil wir einen Zeilenumbruch bekommen haben,
aber wir müssen noch den Wagenrücklauf abzustreifen.
Buff = buff.substring (0, buff.length()-1);


String []-Liste = Split (Buff, ',');
Lesen Sie die Zeichenfolge
Wenn die Schaltfläche "Vollbild" gedrückt wurde, wird eine "C"
die 4. Zeichenposition
Char c = buff.charAt(4);
Wenn nicht mehr zeichnen möchten, eine "N" an erster Stelle
Char d = buff.charAt(0);
Wenn löschen möchten, eine "E" werden im 2. Char Position
Char-e = buff.charAt(2);

buff1 = List [3];
buff2 = List [4];

habe eine N müssen also Zeichnung zu stoppen
Wenn (d == ' n ') {}

StopDraw = "YES";

}
anderes
{
StopDraw = "NO";
}
Löscht den Bildschirm
habe eine C müssen also so schnell wie möglich freimachen
Wenn (c == 'C') {}

ClearScreen = "YES";

}
anderes
{
ClearScreen = "NO";
}




Farben ändern
habe eine E müssen also Text in die Ecke stellen
und warten auf Auswahl
Wenn (e == 'E') {}

NewColor = "YES";

}
anderes
{
NewColor = "NO";
}


Analysiert die Zeichenfolge in eine ganze Zahl.  Wir teilen durch 4, weil
analoge Eingänge gehen von 0 bis 1023 während Farben in Bearbeitung
nur gehen von 0 bis 255.
X = Integer.parseInt (buff1) / 1;
y = Integer.parseInt (buff2) / 2;

println(x);
println(y);

Löschen Sie den Wert von "Buff"
Buff = "";
Erstellen Sie ein Array von zehn Punkten für die Linie
für (Int ich = 0; ich < 9; i ++)
{
Valuesx [i] = Valuesx [i + 1];
Valuesy [i] = Valuesy [i + 1];
}

Das Array den empfangenen Wert hinzufügen.
Valuesx [9] = X;
Valuesy [9] = y;

}
}

//  ================================================
// -------------------------------------------------
void movecursor()
{
an andere Stelle verschieben möchten
wollen Sie also Punkt verschieben, aber möchte es verschwinden wie es bewegt
Wenn ((Stopit == "YES") & & (Moveit == "YES")) {}
Löschen Sie alte Punkt
If(a >0) {}
Stroke(Backg);

Punkt (Oldx, oldy);
}



für (Int ich = 0; ich < 9; i ++) {}
Stroke(255,255,255);
strokeWeight(4);
Punkt (1023 - X, 512 - y);
Speicherort für das nächste Mal gelöscht werden
//

Oldx = 1023 - X;
Oldy = 512 - y;

ein = a + 1;

}
}

//  ================================================
// -------------------------------------------------
void checkswitches()
{
Jetzt ist es Zeit, Schalter Änderungen testen

Wenn ((StopDraw == "YES") & & (ClearScreen == "YES")) {}
StopIT = "YES";
Background(0);
}


Könnte hier bekommen, wenn die StopDraw eingeschaltet aber nicht ClearScreen ist
d.h. nur wollen Sie die Positionierung ohne Zeichnung

Wenn ((StopDraw == "YES") & & (ClearScreen == "Nein")) {}
StopIT = "YES";
Moveit = "YES";
}


Wenn Stopdraw nicht gewechselt haben, dann nichts tun
Wenn (StopDraw == "Nein") {}
StopIT = "NO";
Moveit = "NO";

}

}

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

rot
Wenn (Taste "R" == || Schlüssel == 'R') {}
Linien = color(348,90,90);
}

Orange
Wenn (Schlüssel == ' o ' || Schlüssel == ' o ') {}
Linien = color(237,151,12);
}

gelb
Wenn (Schlüssel == 'y' || Schlüssel == 'Y') {}
Linien = color(236,237,12);
}

Grün
Wenn (Taste 'g' == || Schlüssel == 'G') {}
Linien = color(12,237,28);
}
Blau
Wenn (Taste 'b' == || Schlüssel == 'B') {}
Linien = color(12,47,237);
}




}

Ein kurzes Video von ihm in Aktion folgt:

In Verbindung stehende Artikel

Arduino gesteuert Pocket Etch A Sketch Random Walk Simulation

Arduino gesteuert Pocket Etch A Sketch Random Walk Simulation

dieses Projekt ist das Ergebnis von Wal-Mart Check-Out-Lane Spontankauf von Taschenformat Etch A Sketch für 3,99 $.Zwei Schrittmotoren fahren Etch A Sketch Knopf Wellen und ein Servo-Motor dreht Etch A Sketch um den Bildschirm zu löschen.  Mit der Ar
Arduino-Etch-A-Sketch Uhr

Arduino-Etch-A-Sketch Uhr

ich habe gesehen, dass verschiedene Gefahren Etch-A-Sketch Arduino Uhren auf das Web, aber keines mit Anweisungen (ist es eine Art Geheimnis? Plant jemand, so dass es reich an den Weltmarkt Etch-A-Sketch Uhr?). Ich habe verwendet Arduino, aber nie be
Arduino basierte Etch A Sketch Laser-Cutter.

Arduino basierte Etch A Sketch Laser-Cutter.

In diesem Projekt, ich nehme, ein Arduino Mini Pro verbinden Sie es mit einer benutzerdefinierten gemacht Etch A Sketch panel und verwenden, um eine Schwarznasen laser Cutterkontrollieren. Das Ergebnis ist verrückt Laser schneiden Spaß, die wir rund
SK3TCH - Balance Board kontrollierten Etch-A-Sketch

SK3TCH - Balance Board kontrollierten Etch-A-Sketch

SK3TCHGewusst wie: ein Wii-Balance Board verwenden, um ein Etch-A-Sketch zu steuernNur für WindowsInhalt:1. Intro und Stückliste(2) Getriebe3. der Bau des Rahmens4. Montage5. Anschluss WiiMote und Balance Board6. GlovePIE7. Arduino + Motorsteuerung8.
Virtuelle Etch A Sketch

Virtuelle Etch A Sketch

The Etch A Sketch: berühmte, kreativ und einzigartig. Leider habe ich keine Ahnung, wo ist die aus meiner Kindheit, also beschloss ich, meine eigene virtuelle Erlebnis zu machen! Überprüfen Sie es heraus (und meine schrecklich zeichnerischen Fähigkei
$100 Wandbild Zeichnung Roboter (funktioniert auch als eine riesige etch-a-Sketch)

$100 Wandbild Zeichnung Roboter (funktioniert auch als eine riesige etch-a-Sketch)

Featured auf Hack-a-Day!Was ich liebe Roboter ist, dass Sie einer Sache, die können andere Dinge macht.  So Meta!  Es verwendet Gcode zeichnen ein Bild Sie möchten, oder Sie können fahren sie herum wie ein Etch-a-Sketch.  Sie können diese Roboter bis
Etch-a-Sketch LOGO - EASiLOGO

Etch-a-Sketch LOGO - EASiLOGO

Was bekommen Sie, wenn Sie eine Schildkröte mit einem Etch-a-Sketch überqueren?Etch-A-Sketch interaktive LOGO - "EASiLOGO"!Dies ist die erste Programmiersprache, die speziell für die Welt berühmten Spielzeug aus Ohio Arts - Etch-a-Sketch entworf
NES gesteuert Etch-A-Sketch

NES gesteuert Etch-A-Sketch

Gestützt auf ein Etch-a-Sketch über einen original Nintendo Controller. Ich habe die Etch-a-Sketch-Knöpfe an Schrittmotoren, die dann über ein Arduino-Mikrocontroller gesteuert werden. Das Arduino Programm schrieb ich nimmt Signale aus der NES-Contro
LED Etch-a-Sketch (volle Instructable)

LED Etch-a-Sketch (volle Instructable)

My LED Etch-a-Sketch ist mein erstes vollständig ausgefüllten Elektronik-Projekt. Wenn ich zum ersten Mal in die Elektronik war, die ich für ein Projekt zu suchen, und während des Surfens auf Sparkfun.com stieß ich auf LED-Matrizen und ich wusste, da
VHDL Etch-a-Sketch

VHDL Etch-a-Sketch

Für unsere CPE 133 Abschlussarbeit an der Cal Poly, San Luis Obispo, wir bauten ein Etch-a-Sketch mit VHDL auf dem Diligant Nexys 3 Board. Ein Nexys 3-Board, das Logik-Schaltungen aufbauen kann, ohne sich Gedanken über komplizierte externe Schnittste
Folge 15: Hack eine Etch-A-Sketch zu zeichnen Kreise

Folge 15: Hack eine Etch-A-Sketch zu zeichnen Kreise

wir hier bei dummen Erfindungen Liebe Etch-A-Sketch, aber uns fehlt das künstlerische Talent um etwas gutes auf dem klassischen Spielzeug zu zeichnen.So kamen wir auf eine günstige und einfache Möglichkeit, Etch-A-Sketch zu hacken, so dass nicht nur
3D-Maus Luft | Arduino + Verarbeitung

3D-Maus Luft | Arduino + Verarbeitung

3D AIR Mouse | Arduino + VerarbeitungIch bin ein Industrie-Design-Student, und letztes Jahr im Rahmen eines Kurses genannt "Technology als RAW Material" ich dieses Projekt als mein letztes Werk gebaut.Ich arbeite die meiste Zeit mit SolidWorks,
LED-Etch-a-Sketch

LED-Etch-a-Sketch

My LED Etch-a-Sketch ist mein erstes vollständig ausgefüllten Elektronik-Projekt. Vier 8 verwende x 8 LED-Matrizen ich eine 16 x 16 LED Matrix Oberfläche zeichnen machen. Zwei Potentiometer ermöglichen Benutzereingaben für Spalten- und Bewegung, währ
IPad Etch-A-Sketch wählt

IPad Etch-A-Sketch wählt

Die guten alten Zeiten mit einem DIY-Etch-A-Sketch zurückbringen Zifferblatt, das funktioniert auf jedem Tablet oder Smartphone! Diese instructable lernen Sie, wie eine physische Zifferblatt für Ihr Gerät zu machen. Es ist speziell auf Aussehen und h