Baserade Arduino remote översättare (4 / 5 steg)
Steg 4: byggnad
Så efter att testa koden är det dags att flytta hela provningsutrustningen till permanent styrelse. Jag har använt FQP50N06 N-kanal MOSFET för att förstärka PWM signalen från Arduino stift 3.
Jag använde kvinnliga header till mount Arduino till perfboard så att jag kan ta bort Arduino om något går dåligt i framtiden.
Jag litar inte på sensorn eftersom detta är andra gången jag bygger detta projekt, så jag använder samma sensor för 3 gånger. Så jag använder kvinnliga headers för att montera sensorn, så att den kan ersättas helst. Det kan också vara bra att utvidga sensorn om jag behöver några justeringar.
Digital stiften på Arduino kan bara hantera 40mA och jag inte har någon transistor som kan hantera 500 mA strömförbrukning för grupp av ljusdioder, så jag beslutade att använda en N-kanal MOSFET för att förstärka PWM signalen från Arduino stift 3.
Om Lysdioderna är lägre än 40mA de kan anslutas direkt till digital stift Arduino genom att lägga till 220ohms motstånd.
Jag utformade layouten i fritzing och följde scheman att löda på en perfboard.
Bärbarhet ändamål är jag planerar att använda 9v batteri för att driva enheten genom att ansluta till raw pin av Arduino men jag är orolig att de höga driva lysdioder kan tömma batteriet snabbt. Så det första jag kommer att använda denna enhet med batteri och markera batteritiden om det jag kommer att fortsätta att använda batteridrift kommer annars jag byta till en vägg adapter på omkring 9 volt. Så jag har också lagt två manliga bygelstift till styrelsen att ansluta bildar positiva och negativa ledningar strömförsörjning.
Jag har också lagt till en röd ledde med 220 ohms motstånd att ange aktiviteten av arduino, nästa tryckning kan godtas efter ledde är avstängd.
Detta projekt kan byggas om för eventuella inställningar genom att helt enkelt ändra koder och om villkoret i Arduino koden.
Nu ska jag hitta bra låda att passa allt fint.
#include < IRremote.h >
CONST int RECV_PIN = 12;
CONST int ACT_PIN = 11;
Upprepa int = 3;
osignerade långa currcode;
osignerade långa prevcode;
Settop box koder
CONST osignerade långa stpower = 0x11D9D02F;
CONST osignerade långa volumeup1 = 0x11D948B7;
CONST osignerade långa volumedown1 = 0x11D958A7;
CONST osignerade långa volumeup2 = 0x11D98E71;
CONST osignerade långa volumedown2 = 0x11D94EB1;
TV-koder
osignerade långa tpower = 0x1CE338C7;
osignerade långa av = 0x1CE328D7;
SoundBar koder
osignerade långa sbpower = 0x1100C;
osignerade långa aux = 0x11038;
osignerade långa volumeup = 0x11010;
osignerade långa volumedown = 0x11011;
IRrecv irrecv(RECV_PIN);
IRsend irsend;
decode_results resultat.
void setup()
{
Serial.BEGIN(9600);
irrecv.enableIRIn();
pinMode (ACT_PIN, OUTPUT);
irrecv.blink13(true);
} void loop() {
om (irrecv.decode (& resultat)) {
om (results.decode_type! = okänt)
{
om (results.value! = upprepa)
{
currcode = results.value;
}
annat if (results.value == REPEAT)
{
om (prevcode == volumeup1 || prevcode == volumeup2 || prevcode == volumedown1 || prevcode == volumedown2)
{
currcode = prevcode;
}
annat
{
currcode = 0;
}
}
om (currcode == stpower)
{
digitalWrite (ACT_PIN, hög);
Serial.println("Power");
irsend.sendNEC (tpower, 32);
Delay(500);
irsend.sendRC6 (sbpower, 20);
Delay(1500);
irsend.sendNEC (av, 32);
Delay(500);
digitalWrite (ACT_PIN, låg);
}
annat if (currcode == volumeup1 || currcode == volumeup2)
{
för (int jag = 0; jag < repeat; i ++)
{
digitalWrite (ACT_PIN, hög);
Serial.println("volumeup1");
irsend.sendRC6 (volumeup, 20);
Delay(500);
digitalWrite (ACT_PIN, låg);
}
}
annat if (currcode == volumedown1 || currcode == volumedown2)
{
för (int jag = 0; jag < repeat; i ++)
{
digitalWrite (ACT_PIN, hög);
Serial.println("volumedown1");
irsend.sendRC6 (volumedown, 20);
Delay(500);
digitalWrite (ACT_PIN, låg);
}
}
annat
{
gör ingenting
}
}
prevcode = currcode;
irrecv.Resume();
irrecv.enableIRIn(); tro mig detta har göras igen
}
}