Använder en Uno som strömförsörjning.
Lödat kopplings-kablar till USB-kontakterna.
Var noga med plus och minus.
Det kan förstöra USB-tillbehör om du kopplar fel.
´
Jag använde en test-lampa med en lysdiod,
som lyser om det är rätt kopplat,
och inte lyser om det är fel.
Om du ansluter tillbehör som drar mycket ström,
och använder utgångarna på Uno-kortet för styra strömmen,
så koppla ett relä i mellan.
Efter att laddat upp programmet till Uno-kortet,
behövs ingen dator för att det ska fungera.
Uno-kortet får ström från en mobil-laddare med USB-utgång.
Klicka på bilden, för att förstora.
Trycker först på 2:an för att välja LED-lampa 2,
sedan på plus för att tända den lilla LED-lampan.
Trycker på 1:an för att välja LED-lampa 1 och sedan på plus,
då slår ett relä och tänder den stora LED-lampan.
/*
Experiment med Arduino Uno R3
Fjärrkontroll mottagare.
Koppla 5V till VCC på Mottagare.
Koppla GND till GND på Mottagare.
Koppla 2 till IN på Mottagare.
Relä ingångs-sidan.
Koppla VCC till 5V
GND till GND
IN till Uno 3
Relä utgångs-sidan.
Mitten till Uno 5V
Ena utgången till USB plus(Stora lampan).
Om stora lampan tänder när du släcker
så koppla USB plus(Stora lampan) till
andra utgången på relät.
USB-panel lilla lampan
Koppla jord till GND
USB plus (Lilla lampan) til Uno 4
Säkrast är att använda 2 relän.
*/
#define pinneRelay 3
#define pinneUSB 4
int InPinne = 2;
long BreakTime = 0;
int DataStatus = 1; //0=Avstängd, 1=Väntar på data, 2=Samplar
int DataPekare = 0;
long DataBuffert[100];
int Tangent = 0;
int StyrUsb = 1;
void setup() {
pinMode(InPinne, INPUT);
pinMode(pinneRelay, OUTPUT);
pinMode(pinneUSB, OUTPUT);
digitalWrite(pinneRelay, HIGH);
Serial.begin(9600);
attachInterrupt(0, SamplaData, FALLING);
}
void loop() {
if(DataStatus == 2){
BreakTime = (micros() - DataBuffert[DataPekare-1]);
if( BreakTime > 5000){
DataStatus = 0;
TolkaData();
Serial.print("Du tryckte ner tangent med kod = ");
Serial.println(Tangent);
if(Tangent == 87){
//Tryckte plus
if(StyrUsb == 1){
digitalWrite(pinneRelay, LOW);
}
if(StyrUsb == 2){
digitalWrite(pinneUSB, HIGH);
}
}
if(Tangent == 31){
//Tryckte minus
if(StyrUsb == 1){
digitalWrite(pinneRelay, HIGH);
}
if(StyrUsb == 2){
digitalWrite(pinneUSB, LOW);
}
}
if(Tangent == 207){
//Tryckte etta
StyrUsb = 1;
}
if(Tangent == 231){
//Tryckte tvåa
StyrUsb = 2;
}
DataPekare = 0;
DataStatus = 1;
}
}
}
void TolkaData(){
Tangent = 0;
for (int i=35; i <= 35+15; i=i+2){
Tangent = Tangent << 1;
if(DataBuffert[i + 1] - DataBuffert[i] < 1100){
Tangent = Tangent | 1;
}
}
}
void SamplaData() {
if(DataStatus == 0){
return;
};
DataBuffert[DataPekare] = micros();
DataPekare ++;
do{}while (digitalRead(InPinne) == 0);
DataBuffert[DataPekare] = micros();
DataPekare ++;
DataStatus = 2;
}