Ultrasonic gest baserad TV-fjärrkontrollen (3 / 4 steg)

Steg 3: Skiss

Följande kod bör överföras till Arduino.

/ * Svepa fjärrkontroll

Denna skiss använder en Ultraljuds avståndsmätare för att fastställa användarens gest och utgångar en IR-signal till en sony TV baserat på kommandot ges.
-Hög känga (> 10 i) = kanal upp
-Låg känga = kanal ner
-Hög håll (> 10 i) = volym upp
-Låg Håll = Volym ned
-Täcka sensor (< 3 in) = slå på / av

Skapad av Dan Nicholson.

Denna exempelkod är offentlig.

Denna kod använder IRremote biblioteket (https://github.com/shirriff/Arduino-IRremote)

*/
#include < IRremote.h >

Definierar för kontrollfunktioner
#define CONTROL_CH 1 / / kanal förändring
#define CONTROL_VOL 2 / / volym
#define CONTROL_POW 3 / / Power

#define CONTROL_UP 1
#define CONTROL_DOWN -1

#define DIST_MAX 20 / / maximalt avstånd i tum, allt över ignoreras.
#define DIST_DOWN 10 / / tröskel för upp/ner kommandon. Om högre, är kommandot "up". Om den är lägre, "nedåt".
#define DIST_POW 3 / / tröskel för power kommando, lägre än = ström på/av

IR-PIN
CONST int irPin = 3; detta definieras i biblioteket, detta var är bara en påminnelse. ÄNDRA DETTA INTE ÄNDRAR PIN-BIBLIOTEK
2 stift Ping Sensor
CONST int pingPin = 8;
CONST int echoPin = 7.
Bekräftelse LED stift
CONST int ledde = 13. inre LED för upp/felsökning
CONST int ledR = 11;
CONST int resk.trans.buff = 10;
CONST int ledB = 9.
LED på timer
osignerade långa timer;
IR sändare objekt
IRsend irsend;
Power bekräftelse flagga (behöver två swipes skicka signal)
booleska powerConfirmed = false;

void setup() {
initiera seriell kommunikation och ange stift
Serial.BEGIN(9600);
pinMode ledde (, OUTPUT);
pinMode (ledR, produktionen);
pinMode (resk.trans.buff, produktionen);
pinMode (ledB, produktionen);
pinMode (pingPin, produktionen);
pinMode (echoPin, ingång);
timer = millis();
}

void loop()
{

Serial.println(Millis());
lång varaktighet, inches;
int värde;

Check för en behandling
längd = doPing();

Timer för att bekräfta åtgärder (för närvarande endast power)
om (timer & & timer < (millis() - 5000) & & (millis() > 5000))
{
Serial.println ("timer reset");
timer = false;
}

digitalWrite (ledde, låg);
setColor (0, 0, 0); utanför

konvertera tiden till ett avstånd
tum = microsecondsToInches(duration);

Om mindre än max inches bort, agerar
om (inches < DIST_MAX)
{
Debug utmatning
Serial.Print(inches);
Serial.println("in");

Om mycket nära, är det en "power"-signal
om (inches < DIST_POW)
{
Serial.println(timer);
på eller av
om (timer)
{
doIR (CONTROL_POW, 0);
timer = false;
Delay(2000); vill du inte att skicka detta mer än en gång. 2 sekunders fördröjning
}
annat
{
Serial.println ("power flagga uppsättning");
timer = millis();
setColor(255,50,50);
Delay(500);
}
}
annat / / är volym eller kanal
{
Avståndet avgör styra riktning
värde = handleDist(inches);
vänta en halv sekund
Delay(300);
Kolla igen, har sidan försvunnit?
om (microsecondsToInches(doPing()) > DIST_MAX)
{
doIR (CONTROL_CH, värde); känga
}
annat
{
volym
int d = 500. första dröjsmål är längre för enda volymförändring
Upprepa tills hand tas bort
medan (inches < DIST_MAX)
{
värde = handleDist(inches); är upp eller ner?
doIR (CONTROL_VOL, värde); avfyra IR-signalen
Delay(d); Vänta
tum = microsecondsToInches(doPing()); check för hand igen
d = 100; förseningar är kortare för snabb flera volymjustering
}
Delay(500); Detta stoppar oavsiktlig kanal förändring efter volymjustering
}
}
}
Delay(50); Kort nog att upptäcka alla swipes.
}
/*
* Om avståndet är inom tröskel, markera som "upp" och aktivera motsvarande LED.
*/
int handleDist (int inches)
{
om (tum > DIST_DOWN)
{
digitalWrite (ledde, högt);
återvända CONTROL_UP;
}
annat
{
digitalWrite (ledde, låg);
återvända CONTROL_DOWN;
}
}

/*
* Avfyra rätt IR-kod
*/
void doIR (int kontroll, int val)
{
Switch(Control)
{
fall CONTROL_POW:
Power
Serial.println ("power on/off 0xa90");
för (int jag = 0; jag < 3; i ++)
{
setColor (255, 0, 0);
irsend.sendSony (0xa90, 12); Sony TV power kod
Delay(40);
}
bryta;
fall CONTROL_CH:
setColor (0, 255, 0);
output "kanal upp / ner" beroende på val
om (val == CONTROL_UP)
{
digitalWrite (ledde, högt);
för (int jag = 0; jag < 3; i ++)
{
irsend.sendSony(0x90, 12);
Delay(40);
}
Serial.println ("kanal upp 0xD00A");
}
annat / / ner
{
för (int jag = 0; jag < 3; i ++)
{
irsend.sendSony (0x890, 12);
Delay(40);
}
Serial.println ("kanal ner 0x3002");
}
bryta;
fall CONTROL_VOL:
setColor (0, 0, 255);
output "volym upp / ner" beroende på val
om (val == CONTROL_UP)
{
digitalWrite (ledde, högt);
för (int jag = 0; jag < 3; i ++)
{
irsend.sendSony (0x490, 12);
Delay(40);
}
Serial.println ("volym upp 0x490");
}
annat //down
{
för (int jag = 0; jag < 3; i ++)
{
irsend.sendSony (0xC90, 12);
Delay(40);
}
Serial.println ("volym ner 0xC90");
}
bryta;
}
}
void setColor (int rött, int grön, int blå)
{
analogWrite (ledR, röd);
analogWrite (resk.trans.buff, grön);
analogWrite (ledB, blå);
}

lång doPing()
{
digitalWrite (pingPin, låg);
delayMicroseconds(2);
digitalWrite (pingPin, hög);
delayMicroseconds(5);
digitalWrite (pingPin, låg);
återgå pulseIn (echoPin, hög);
}

lång microsecondsToInches(long microseconds)
{
Enligt Parallaxs datablad för PING))), det finns
73.746 mikrosekunder per tum (dvs. ljud resor på 1130 fot per
det andra). Detta ger vägsträcka som ping, utgående
och tillbaka, så vi delar med 2 att få distansera av hindret.
Se: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
återvända mikrosekunder / 74 / 2;
}

lång microsecondsToCentimeters(long microseconds)
{
Ljudets hastighet är 340 m/s eller 29 mikrosekunder per centimeter.
Ping reser ut och tillbaka, så för att hitta distansera av den
objekt vi tar hälften av den tillryggalagda.
återvända mikrosekunder / 29 / 2;
}

Se Steg
Relaterade Ämnen

Gest kalkylator (Intel IoT)

Tanken bakom projektet är att utveckla en kalkylator som fungerar utifrån hand rörelsen vilket är lämpligt för den visuellt utmanade att utföra aritmetiska operationer.Steg 1: idéMottot för projektet är att göra den visuellt utmanade att utföra matem...

Gest baserat Home Automation med Intel Edison (Intel IoT))

Gest baserade hemautomation är det nya sättet att interagera med elektriska apparater tillgängliga på vårt hus. I detta projekt kommer vi att använda sensorer i stället för kamera för gestigenkänning, eftersom det ger bättre konsistens, miljö oberoen...

WIRELESS GAMING KONSOLEN använder mänskliga GESTER

gest baserade spelenheten och Game design Guide... (både maskinvara och programvara!!)Steg 1: IntroduktionNu anses en dagar virtuell miljö som ett medel för effektiv mänsklig interaktion. Detta definieras av den diversifierade tillämpningsområde. Ans...

IR-fjärrkontrollen posterar för Android - Sänk TV

Obs: denna GUIDE kan också hittas på TECHBITAR.COMUPPDATERING28 nov 2013: Med på farliga prototyper http://goo.gl/FjwNoQINTRODUKTIONI denna guide kommer jag förklara att skapa och drift av en enkel Arduino-baserad IR-fjärrkontrollen posterar (IR-post...

TRÅDLÖS GAMING KONSOLEN med mänskliga GESTER

titta på denna video! Detta är ett 2d-spel i detta projekt vi ska bygga 2D-spel och hårdvara till trådlöst med gester för spel.Steg 1: Att bygga maskinvara och programvara Gest baserad spelenheten och Game design Guide... (både maskinvara och program...

Mini-Multitouch Interface

detta Instructable visar hur du skapar ett mini-multitouch-gränssnitt av enkla delar kan du beställa på nätet eller köpa i en typisk konstruktion/järnaffär.Multitouch-gränssnitt är ytor som kan registrera flera "touch poäng" på samma gång,menand...

Prata med din enhet via internet

Du talar, och enheten kommer att lyssna... även om enheten är halvvägs över hela världen!Detta instructable kommer att lära dig hur du använder en röst erkännandesystem baserade på Intel RealSense kameran för att skicka vilsam kommandon via internet...

Humanoid sällskapsdjur Robo (Intel IoT)

IoT RobotVi planerade att utforma en IoT baserade Humanoid Pet Robot använder Intel Edison. Humanoid Pet Robot är ett artificiellt intelligent maskin som liknar mänskliga vanligen betraktas som mänskliga vän. Vår robot kommer att interagera med mänsk...

Getsure Control Robot bil

Gest erkännande robotbil baserad på Micrcohip MGC3130 Efield teknik.Steg 1: Material som krävs förMaterial som användsGest erkännande KitArduino Uno baserad RobotZigBee modulenellerBluetooth-modulSteg 2: Arduino anslutning till Motor och ZigbeeObs: D...

Quipt: Tämja industrirobotar

Industrirobotar är verkligen otroligt CNC maskiner – – inte bara för deras hastighet, kraft och precision, men eftersom de också är mycket anpassningsbar. Till skillnad från andra CNC maskiner, när du lägger ett verktyg på slutet av roboten, du helt...

Arduino kroppsburna tangentbordet handske

Arduino kroppsburna tangentbordet handsken är en arduino powered gest baserade inmatningsenhet. I huvudsak genom att flytta baserat ett finger kan du använda en T9 input system skriver!Enheten utvecklades ursprungligen som ett proof of concept för en...

GEST kontrollerade Arduino baserade Rover (Wireless + linje följande)

Vad är det kan?1. det kan styras med gester.2. det kan skicka temperatur, objekt avstånd, batterinivå, etc. värden till handsken (LCD).3. kan köras på 45 + graders vinkel.4. Tx Rx par på både rover och handske (för dubbelriktad dataöverföring).Varför...

Arduino browser baserade fjärrkontrollen (linux)

vi har barn. Jag älskar dem till bitar men de hålla gömmer sig fjärrkontrollen för satellit och TV när de sätter barnens kanaler på.Efter detta händer dagligen i flera år, och efter min älskling fru gör att jag kan ha en Arduino för jul bestämde jag...

Baserade Arduino 4WD Bluetooth Microbot

Denna microbot är inspirerad av Arduino-Nano-baserade-Microbot. Istället för att använda 2 servon, är denna robot drivs av 4, vilket eliminerar behovet av spår.Micro controller jag använder är Bluno skalbaggen, som är en liten Arduino baserade contro...

DIY Arduino 3D IR gest Sensor

Om du gillar detta projekt Vänligen rösta för det i "Sensorer Contest 2016" som det tog mig mycket tid att göra det (att trycka på knappen överst till höger där det står "Rösta").* Har du någonsin velat använda gester för att styra mus...

Gest erkännande mus med Matlab bildbehandling.

Någonsin tror att wearables upptar viktig position i datorn hantering?Gest gör det hela.Välkommen till mitt nya projekt med gest erkännande mus.Här är projektkraven för:1) färg tokens/markörer (röd, blå, grön)2) Webcam.3) Matlab software.4) Windows p...

Baserade Arduino remote översättare

Det finns 3 fjärrkontrollen är bara att titta på min TV, för TV, sätta topp låda och sound bar. Förfarande för att titta på TV är byta på TV att sätta sin källa till A / V, inkoppling ljudsystem och sätta dess källa för aux och inkoppling sätta topp...

Mobiltelefon-baserade Remote Controller för vattenpump

Besvär i växling på en pump installerad i en avlägset liggande lantgård är ett vanligt problem för många. En hel del kretsar har utvecklats för att lösa detta problem. De flesta av dem är dyra och mikrokontroller-baserade. Här presenterar vi en mobil...

ESP8266 baserad web konfigurerbara wifi generell kontroll (del I)

Obs: Redo för att åka styrelser kan köpas härFrån AT-kommandon till firmware kontrolleradTyp av ny ESP8266 wifi modul är inte bara billigt, ca 3-4 dollar, dess också en ganska mångsidig modul som gör massor av fjärrkontrollen tillämpningar (Ja, saker...