Interactieve Passer.

by erikw49 in Living > Organizing

360 Views, 1 Favorites, 0 Comments

Interactieve Passer.

Resultaat

gemaakt door Erik Wiersma

Intro

front.png

instructables

interactieve passer. In dit project heb ik een interactief systeem proberen te bouwen dat voor jou een perfecte cirkel maakt. Dit systeem neemt afstand input van Ultrasonic Sensor en zet deze om in omwentelingen die hij draait.

Hieronder is een uitleg hoe je zo’n systeem in elkaar zet. Je kan de eerste 3 stappen gebruiken voor het maken van de basis voor je Interactieve passer.

Benodigdheden

UITLEG2 3.jpg

(1x) Arduino Uno

(1x) ultrasonic sensor

(3x) 220 ohm resistors

(1x) LED Rood

(1x) LED Blauw

(1x) LED Geel

(1x) LED Geel

(15x) Jumper Wires

(1x) een potje waar alle bedrading en de arduino in kan.

3D printer om alle onderdelen te printen.

Het model is erg precies en moet met hoog detail uit geprint worden anders gaan dingen niet lekker lopen.

In Elkaar Zetten

Als de 3d modelen zijn uit geprint spreekt het redelijk voor zich zelf.
De boven en onderkant kunnen met de 3mm boutjes met de binnentands ring er tussen aan elkaar worden gezet. De tandwielstrip houder kan aan de binnentands ring worden gelijmd het kleine tandwiel kan met een klein asje vast worden gemaakt. let op! hij moet nog wel kunnen draaien omdat anders de tandheugel niet kan veranderen van afstand.

De servo kan in het bakje staan van de onderkant deze heb ik heb de servo vastgemaakt met elastiekjes zodat als de binnenlands ring ergens vastloopt, de servo zichzelf naar achter drukt en zichzelf niet kapot maakt. Het aandrijftandwiel kan aan de servo worden geplakt zodat hij goed vast zit

De casing kan boven en onder dat is een keuze die je zelf kan maken. Ik heb gekozen voor boven zodat de ultrasonic sensor naar boven staat.

Ik heb na de tijd nog robbertjes aan de onderkant toegevoegd zodat de passer niet weg liep.

Code

sircute.png

In de code wordt de ultrasonic sensor input omgezet naar steps voor de servo.

als stand-by = oranje

als links draait = rood

als rechts draait = blauw

Wees vrij om elke kleur te veranderen naar eigen smaak.

//gemaakt door Erik Wiersma
//gemaakt op 14-1-2019 //vrij te gebruiken voor je persoonlijke projecten of studies.

#include <ContinuousServo.h>

//verbinden van het script naar pin 2 ContinuousServo servo(2); //vebinden van in/outputs int trigPin = 13; //output voor sonar int echoPin = 12; //input voor sonar int links = 5; //LED draaien links int rechts = 6; //LED draaien rechts int pauze = 10; //LED voor standby int newSteps = 0;//aanmaken van int voor de remap distance int newDelay = 0;//aanmaken van int voor de remap delay void setup() { Serial.begin(57600); pinMode(trigPin, OUTPUT); //zet output sonar pinMode(echoPin, INPUT); //zet input sonar pinMode(links, OUTPUT); //zet output LED als LED draait links pinMode(rechts, OUTPUT); //zet output LED als LED draait rechts pinMode(pauze, OUTPUT); //zet output LED als hij klaar staat voor volgende opdracht }

void loop() { long duration, distance; digitalWrite(trigPin, LOW); // reset de trigPin delayMicroseconds(2); digitalWrite(trigPin, HIGH); // zet de trigPin op HIGH voor 10 micro seconde delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); // leest echoPin, distance = duration*0.034/2; //berekent de geluids golven digitalWrite(pauze, HIGH); //zet de stand by LED aan

newSteps = map(distance, 3, 30, -50, 50); //remap van afstand 3cm tot 30cm > -30 tot 30 om hoeveelheid van de draai te berekenen. newDelay = map(newSteps, -50, 50, 10, 100); //remap van afstand 3cm tot 30cm > 100 tot 300 om hoeveelheid delay te berekenen.

if (distance <= 30 && distance >= 3) //trashold voor het aan gaan tussen 3cm & 30cm { if (distance <= 18 && distance >= 12) //trashold voor het aan gaan tussen 3cm & 30cm { servo.step(1); //aanspreken vervo met de remap } servo.step(newSteps); //aanspreken vervo met de remap digitalWrite(pauze, LOW); //zet standby LED uit

if (newSteps <= 0) //om te onderschijden of hij links of rechts draait { digitalWrite(rechts, HIGH); //LED voor rechts aan } else { digitalWrite(links, HIGH); //anders zet LED voor links aan } delay(newDelay * 20); //delay zodat de opdracht voledig uit gevoerd kan worden Serial.print(distance ); //voor het lezen van de sonar Serial.println(" distance"); Serial.print(newSteps); //het lezen van het aantal pulses die aan de servo wordt gegeven Serial.println(" newSteps"); Serial.print(newDelay); //het lezen van het aantal secondes delay die na de opdracht komt Serial.println(" newDelay"); digitalWrite(rechts, LOW); //LED uit digitalWrite(links, LOW); //LED uit } }