Ultrasone gebaar gebaseerde TV afstandsbediening (3 / 4 stap)

Stap 3: De schets

De volgende code moet worden geüpload naar de Arduino.

/ * Jat afstandsbediening

Deze sketch een ultrasone afstandsmeter gebruikt om te bepalen van de gebruiker gebaar en uitgangen een IR-signaal op een sony TV op basis van de opdracht gegeven.
-Hoge uithaal (> 10 inch) = kanaal omhoog
-Lage vegen = omlaag
-Hoog houden (> 10 inch) = Volume omhoog
-Laag houden = Volume omlaag
-Dekking van de sensor (< 3 inch) = Turn On / Off

Gemaakt door Dan Nicholson.

Deze voorbeeldcode is in het publieke domein.

Deze code gebruikt de IRremote bibliotheek (https://github.com/shirriff/Arduino-IRremote)

*/
#include < IRremote.h >

Definieert voor besturingsfuncties
#define CONTROL_CH 1 / / kanaal wijzigen
#define CONTROL_VOL 2 / / Volume
#define CONTROL_POW 3 / / Power

#define CONTROL_UP 1
#define CONTROL_DOWN -1

#define DIST_MAX 20 / / maximale afstand in inches en om het even wat hierboven wordt genegeerd.
#define DIST_DOWN 10 / / drempel voor omhoog/omlaag opdrachten. Als hoger, is de opdracht "up". Indien deze lager is, "down".
#define DIST_POW 3 / / drempel voor macht opdracht, lager dan macht = aan/uit

IR-PIN
Const int irPin = 3; Dit is gedefinieerd in de bibliotheek, deze var is enkel een herinnering. DIT ZAL NIET WIJZIGT, WORDT PIN IN BIBLIOTHEEK
2 pin Ping Sensor
Const int pingPin = 8;
Const int echoPin = 7;
Bevestiging LED Pins
Const int geleid = 13; interne LED voor omhoog/omlaag foutopsporing
Const int ledR = 11;
Const int ledG = 10;
Const int ledB = 9;
LED op timer
niet-ondertekende lange timer;
IR zender object
IRsend irsend;
Macht bevestiging vlag (moet twee jat signaal)
Boole powerConfirmed = false;

VOID Setup {}
initialiseren van seriële communicatie en pennen te stellen
Serial.begin(9600);
pinMode led (, uitvoer);
pinMode (ledR, OUTPUT);
pinMode (ledG, OUTPUT);
pinMode (ledB, OUTPUT);
pinMode (pingPin, OUTPUT);
pinMode (echoPin, INPUT);
timer = millis();
}

void loop
{

Serial.println(Millis());
lange duur, duim;
int waarde;

Selectievakje voor een lezing
duur = doPing();

Timer om te bevestigen van acties (momenteel alleen kracht)
Als (timer & & timer < (millis() - 5000) & & (millis() > 5000))
{
Serial.println ("timer reset");
timer = false;
}

digitalWrite (led, laag);
setColor (0, 0, 0); uitschakelen

de tijd omzetten in een afstand
duim = microsecondsToInches(duration);

Als minder dan max inch weg, handelen
Als (inch < DIST_MAX)
{
Debug output
Serial.Print(inches);
Serial.println("in");

Als heel dichtbij, is het een "power"-signaal
Als (inch < DIST_POW)
{
Serial.println(timer);
in- of uitschakelen
Als (timer)
{
doIR (CONTROL_POW, 0);
timer = false;
delay(2000); wil niet te worden het versturen van deze meer dan eens. 2 seconden vertraging
}
anders
{
Serial.println ("vlag machtsverzameling");
timer = millis();
setColor(255,50,50);
delay(500);
}
}
anders / / is volume of kanaal
{
Afstand bepaalt de richting van de controle
waarde = handleDist(inches);
een halve seconde wachten
delay(300);
Controleer nogmaals, hand verdwenen?
Als (microsecondsToInches(doPing()) > DIST_MAX)
{
doIR (CONTROL_CH, waarde); swipe
}
anders
{
volume
int d = 500; eerste vertraging is langer voor één volume wijzigen
Herhaal totdat hand is verwijderd
terwijl (inch < DIST_MAX)
{
waarde = handleDist(inches); is omhoog of omlaag?
doIR (CONTROL_VOL, waarde); vuur af IR signaal
delay(d); wachten
duim = microsecondsToInches(doPing()); selectievakje voor hand weer
d = 100; vertragingen zijn korter voor snelle meerdere volumeaanpassing
}
delay(500); Dit stopt per ongeluk kanaal wijzigen na volumeaanpassing
}
}
}
delay(50); Kort genoeg om op te sporen alle jat.
}
/*
* Als afstand binnen drempel, markeren als 'tot' en bijbehorende LED inschakelen.
*/
int handleDist (int inch)
{
Als (inch > DIST_DOWN)
{
digitalWrite (led, hoog);
Return CONTROL_UP;
}
anders
{
digitalWrite (led, laag);
Return CONTROL_DOWN;
}
}

/*
* Vuur af de juiste IR-code
*/
VOID doIR (int control, int val)
{
switch(Control)
{
Case CONTROL_POW:
macht
Serial.println ("power on/off 0xa90");
for (int i = 0; ik < 3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); Sony TV power code
delay(40);
}
breken;
Case CONTROL_CH:
setColor (0, 0, 255);
uitvoer 'kanaal up / down' afhankelijk van de val
Als (val == CONTROL_UP)
{
digitalWrite (led, hoog);
for (int i = 0; ik < 3; i ++)
{
irsend.sendSony(0x90, 12);
delay(40);
}
Serial.println ("kanaal omhoog 0xD00A");
}
anders / / omlaag
{
for (int i = 0; ik < 3; i ++)
{
irsend.sendSony (0x890, 12);
delay(40);
}
Serial.println ("kanaal naar beneden 0x3002");
}
breken;
Case CONTROL_VOL:
setColor (0, 0, 255);
uitvoer 'volume omhoog / omlaag' afhankelijk van de val
Als (val == CONTROL_UP)
{
digitalWrite (led, hoog);
for (int i = 0; ik < 3; i ++)
{
irsend.sendSony (0x490, 12);
delay(40);
}
Serial.println ("volume omhoog 0x490");
}
anders //down
{
for (int i = 0; ik < 3; i ++)
{
irsend.sendSony (0xC90, 12);
delay(40);
}
Serial.println ("volume omlaag 0xC90");
}
breken;
}
}
VOID setColor (int rood, int groene, blauwe int)
{
analogWrite (ledR, rood);
analogWrite (ledG, groene);
analogWrite (ledB, blauw);
}

lange doPing()
{
digitalWrite (pingPin, laag);
delayMicroseconds(2);
digitalWrite (pingPin, hoge);
delayMicroseconds(5);
digitalWrite (pingPin, laag);
keren pulseIn (echoPin, hoge);
}

lange microsecondsToInches(long microseconds)
{
Volgens de Parallax gegevensblad voor de PING))), er zijn
73.746 microseconden per inch (dwz geluid reist aan 1130 voeten per
seconde).  Dit geeft de afstand die is afgelegd door de ping, uitgaande
en terug te keren, zodat wij door 2 delen te krijgen van de afstand van het obstakel.
Zie: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
retourneren van microseconden / 74 / 2;
}

lange microsecondsToCentimeters(long microseconds)
{
De snelheid van het geluid is 340 m/s of 29 microseconden per vierkante centimeter.
De ping reist uit en terug, zo vind je de afstand van de
we de helft van de afgelegde afstand nemen-object.
retourneren van microseconden / 29 / 2;
}

Gerelateerde Artikelen

Gebaar gebaseerd Home Automation met behulp van Intel Edison (Intel IoT))

Gebaar gebaseerd Home Automation met behulp van Intel Edison (Intel IoT))

Gebaar gebaseerd huisautomatisering is de nieuwe manier om te interageren met elektrische apparaten beschikbaar in ons huis. In dit project we zullen worden met behulp van sensoren in plaats van de camera voor gebaar erkenning, omdat het biedt betere
ARDUINO gebaseerd IR afstandsbediening robot

ARDUINO gebaseerd IR afstandsbediening robot

Hallo iedereen. Dit mijn nieuwe project IR afstandsbediening robot met behulp van arduino. Dit is een eenvoudig ontwerp robot die kunt u gemakkelijk bouwen.Stap 1: vereisten:Projecteisen:Arduino uno Tsop1738 (ir ontvanger)H brug ic (L293D)Twee gelijk
IR afstandsbediening Station voor Android - TV AFSLAAN

IR afstandsbediening Station voor Android - TV AFSLAAN

Opmerking: deze gids kan ook worden gevonden op TECHBITAR.COMUPDATE28 november 2013: Featured op gevaarlijke Prototypes http://goo.gl/FjwNoQINTRODUCTIEIn deze handleiding zal ik uitleggen van de werking van een eenvoudige schakeling van de Arduino ge
Afstandsbediening kleur veranderende pompoen

Afstandsbediening kleur veranderende pompoen

Halloween is slechts een paar dagen weg. We krijgen in de geest door het bouwen van een afstandsbediening kleur wijzigen van de pompoen. Kanaal knoppen 0-8 op de afstandsbediening schakelen de kleuren van de regenboog. Knop 9 activeert een 'boze pomp
Gebaar van de rekenmachine (Intel IoT)

Gebaar van de rekenmachine (Intel IoT)

Het idee achter het project is het ontwikkelen van een rekenmachine die werken op basis van de hand-beweging die nuttig voor visueel uitgedaagd zijn zal om rekenkundige bewerkingen uitvoeren.Stap 1: ideeHet motto van het project is om visueel uitgeda
WIRELESS GAMING CONSOLE met behulp van menselijke GEBAREN

WIRELESS GAMING CONSOLE met behulp van menselijke GEBAREN

gebaar gebaseerd spelbesturing en Game-design gids... (zowel Hardware als software!!)Stap 1: InleidingNu wordt een virtuele omgeving dagen beschouwd als een middel van efficiënte menselijke interactie. Dit wordt gedefinieerd door de uiteenlopende toe
HackerBoxes 0006: Internet van dingen (IoT) projecten met het deeltje foton

HackerBoxes 0006: Internet van dingen (IoT) projecten met het deeltje foton

Hacken van het Internet van dingen! Deze maand, abonnees op HackerBoxes werken met de spaanplaat van de Photon IoT aan controle-apparaten via het Internet, verzamelen sensor gegevens via het Internet, gegevens opslaan in de cloud, en nog veel meer.Di
Quipt: Temmen industriële Robots

Quipt: Temmen industriële Robots

Industriële robots zijn echt ongelooflijk CNC machines – – niet alleen voor hun snelheid, kracht en precisie, maar omdat zij ook zeer aanpasbaar zijn. In tegenstelling tot andere CNC-machines, als u een hulpmiddel op het einde van de robot, plaatst u
Praten met uw apparaat via het internet

Praten met uw apparaat via het internet

Je spreekt, en het apparaat zal luisteren... zelfs als uw apparaat halverwege over de hele wereld is!Dit instructable leert u hoe u met een systeem van de stem-erkenning op basis van de Intel RealSense-camera rustgevende opdrachten via het internet v
Humanoïde huisdier Robo (Intel IoT)

Humanoïde huisdier Robo (Intel IoT)

IoT RobotWe gepland om het ontwerpen van een IoT gebaseerd huisdier humanoidrobot met behulp van Intel Edison. Huisdier humanoidrobot is een kunstmatige intelligente machine die lijkt op mens algemeen beschouwd als menselijke vriend. Onze robot inter
Arduino Wearable toetsenbord handschoen

Arduino Wearable toetsenbord handschoen

De Arduino Wearable toetsenbord handschoen is een arduino aangedreven gebaar gebaseerd invoerapparaat. In wezen door het bewegen van een vinger kunt u een T9 gebaseerd invoersysteem typt!Het apparaat werd oorspronkelijk ontwikkeld als een proof of co
Getsure controle Robot auto

Getsure controle Robot auto

Gebaar erkenning robot auto gebaseerd op Micrcohip MGC3130 Efield technologie.Stap 1: Benodigde materialenGebruikte materiaalGebaar erkenning KitArduino Uno gebaseerd RobotZigBee moduleofBluetooth-moduleStap 2: Arduino verbinding met Motor en ZigbeeO
GEBAAR gecontroleerd Arduino gebaseerd Rover (Wireless + volgende lijn)

GEBAAR gecontroleerd Arduino gebaseerd Rover (Wireless + volgende lijn)

Wat het in staat is?1. het kan worden gecontroleerd met behulp van gebaren.2. het kan verzenden temperatuur object afstand, batterijniveau, etc. waarden de handschoen (LCD).3. kunt uitvoeren op de hoek van 45 + graden.4. Tx Rx paar op zowel de rover
Versnellingsmeter gebaseerd gebaar erkenning voor het beheersen van een LED

Versnellingsmeter gebaseerd gebaar erkenning voor het beheersen van een LED

Deze materialen en de informatie in dit instructable zijn geboden door studenten die zijn ingeschreven bij de Software of Places (www.softwareofplaces.com)Klasse PUC-Rio Universiteit. De inhoud hier vertegenwoordigd is de laatste project van de stude