Introduction: Personal Space Devil

School project for the HKU!

I'll continue in Dutch :)

-

Mijn idee:

Ik wilde iets maken dat tot leven zou komen als je dichterbij komt. Een waakhond? Een kleine alien? Ik ben uiteindelijk voor een robotje gegaan.

Wat doet mijn robot?

Mijn robot wordt boos zodra je te dichtbij komt. Zijn grote lichtgevende oog wordt steeds roder des te dichterbij je komt. Maar dat niet alleen, ook gaat mijn robotje wiebelen zodra je écht te dicht bij komt!

Waarom?

Ik kwam op een project: https://www.instructables.com/id/LED-Ring-Distanc...

Die maakte een distance sensor. Dit was een beetje hetzelfde als hoe dat er bij een auto uit ziet. Alleen moest het mij eerder denken aan een wezentje met 1 groot oog dat licht geeft. Toen dat in mij opkwam dacht ik: “dit moet ik combineren, een distance sensor wat eigenlijk een wezentje is”

Supplies

Technisch

- Arduino uno

- Eén WS2812B Digitale 5050 RGB LED Ring - 12 LEDs

- Eén SG90 Mini Servo

- distance sensor (HC-SR04)

- Powerbank

- Soldeer-set

Behuizing:

- Karton

- Snijmesje

- Snijplak

- Liniaal

- Lijmpistool

- (Zwarte) acrylverf

Step 1: Onderdelen Koppelen Aan De Arduino

Sensor:

GND = GND

5V = VCC

Pin 11 = Trigger

Pin 10 = Echo

LED:

GND = GND

5V = 5V

Pin 7 = Data In

Servo:

Pin 9

5V

GND

(maakt niet uit welk gaatje van de servo je het doet)

Step 2: De Code

#include

#include

#include #ifdef __AVR__ #include // Required for 16 MHz Adafruit Trinket #endif #define PIN 7 #define NUMPIXELS 12

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Servo servo1; NewPing sonar(11, 10); //eerst de trigger, dan de echo.

void setup() {

Serial.begin(9600); servo1.attach(9); pinMode(11, INPUT);

pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) servo1.write(15); }

void loop() {

delay(10); int distance = sonar.ping_cm(); int servoPos = map(distance, 0, 30, 90, 0);

Serial.print("Afstand="); Serial.println(distance);

if (distance > 0 && distance < 30) { servo1.write(servoPos/3); // delay(500); delay(200); servo1.write(0); // delay(500); delay(200); } if (distance > 30 ){ servo1.write(15); delay(100); }

if (distance > 50){ for (int i = 0; i <= NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(0, 0, 255)); } pixels.show(); } if (distance > 30 && distance < 40) { for (int i = 0; i <= NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(255, 0, 0)); } pixels.show(); }

if (distance > 20 && distance < 30) { for (int i = 0; i <= NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(150, 255, 0)); } pixels.show(); }

if (distance > 10 && distance < 20) { for (int i = 0; i <= NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(30 , 255, 0)); } pixels.show(); }

if (distance > 0 && distance < 10) { for (int i = 0; i <= NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(0, 255, 0)); } pixels.show(); }

}

-

-

-

Toelichting:

De code van de LED heb ik eerst gekopieërt van iemand anders. Alleen hadden zij de LED van kleur laten veranderen in een cirkel. Ik wilde dit niet. Ik wilde dat mijn LED 1 kleur zou krijgen en vervolgens veranderd naar een andere kleur met alle LEDs tegelijk. Hiervoor moest ik een for loop in een if statement zetten.

De code voor de Servo hadden we voor een groot deel in de les geleerd.

Step 3: Behuizing Maken

Snijd de volgende vormen uit karton met een snijmesje: (zie bijlage)

Lijm de onderdelen aan elkaar met een lijmpistool. Een lijmpistool is noodzakelijk! Deze lijm is sterk genoeg, gewone knutsellijm is te zwak en we willen een stevige behuizing!

Verf vervolgens de buitenkant van je behuizing zwart of een andere kleur naar keuze.

-

Lijm alleen de onderdelen vast per deel (alle stukken van het hoofd, alle stukken van de voet, alle stukken van het lichaam) maar niet alle lichaamsdelen aan elkaar! De voet gaan we later pas bevestigen aan het lichaam zodra we alle bedrading goed hebben weggewerkt.

Het hoofd word niet vastgelijmd. Mocht er iets fout zijn met de bedrading, dan kan je er nog goed bij komen door even het klepje (hoofd) open te maken.

Step 4: Bedrading Verwerken

Zorg dat er een gatje in het plateau van de servo zit en bovenaan het voetstuk, hierdoor kan alle bedrading naar de Adruino onderaan lopen. in het voetstuk zit de Servo. In het lichaam zit de afstandssensor. In het hoofd zit de LEDring. in het lichaam zit ook aan de zeikant de printplaat geplakt.

De sensor moet in het lichaam worden geplaatst door 2 gaten aan de voorkant te maken. Hier kan de sensor precies doorheen.

De LED moet in het hoofd geplaats worden door het gaat wat we hebben geneden. Hier kan je hem in klemmen.

Zodra alle bedrading goed is weggewerkt kunnen we de voet aan het lichaam vastmaken. LET OP: Zodra deze vastzit kan je niet meer bij de Servo komen, zorg daarom dat de servo al helemaal goed vast zit en niks meer aan hoeft veranderd te worden.

Plaats het lichaam op de voet door hem eerst door het stokje aan de achterkant te halen en lijm vervolgens de servo aan de binnenkant van het lichaam met een lijmpistol.

Step 5: Logboek