Stap 2: Program de Microcontroller
//-=-=-=-=-=-=-=-=-=-
#define SENSE_PIN 2
#define PULSE_PIN 3
#define FAN_PIN 5
#define FAN_DELAY 180000
#define FAN_RUN_TIME 180000
vluchtige Booleaanse detectState;
VOID Setup {}
pinMode (13, OUTPUT);
pinMode (PULSE_PIN, uitvoer);
pinMode (SENSE_PIN, INPUT);
pinMode (FAN_PIN, uitvoer);
digitalWrite (SENSE_PIN, laag);
}
void loop {}
testBeam();
delay(1000);
}
ongeldig testBeam() {}
/*
Over wakker, pulse de IR zender terwijl u luistert voor een lage onderbreken op de fototransistor.
Als het laag was tijdens de pols, iets geblokkeerd de bundel, dus de ventilator te activeren.
*/
detectState = true;
attachInterrupt (0, & beamInterrupt, wijzigen);
digitalWrite (PULSE_PIN, hoge);
delay(200); MS
detachInterrupt(0);
digitalWrite (PULSE_PIN, laag);
Als (detectState) {}
digitalWrite (13, hoge);
delay(FAN_DELAY);
digitalWrite (FAN_PIN, hoge);
delay(FAN_RUN_TIME);
digitalWrite (FAN_PIN, laag);
digitalWrite (13, laag);
}
vertraging(20);
}
ongeldig beamInterrupt() {}
detectState = false;
}
//-=-=-=-=-=-=-=-=-=-=-
Als u van een Arduino Uno, Mini of andere USB-compatibele Arduino gebruikmaakt, moet u alleen maar de stekker in, selecteer het juiste bord in de Tools -> Pension menu, en klik op de "Upload" knop. Het duurt slechts enkele seconden. Als je board seriële-stijl programmering headers heeft, moet u een seriële adapter van FTDI in plaats daarvan gebruiken. U gebruikt waarschijnlijk een bestuur dat is gebaseerd op de Duemillanove. Als u niet zeker weet wat u moet selecteren Tools -> Raad van bestuur, de maker van je board kan waarschijnlijk u vertellen.
Voor prototyping doeleinden, zult u willen veranderen in de waarden voor FAN_DELAY en FAN_RUN_TIME boven iets veel kleiner. Vergeet niet dat deze waarden in milliseconden (één-duizendste van een seconde). Wanneer u kunt de lichtbundel breken en de ventilator begint, een ander programma terug naar de hierboven aangegeven waarden of wat best bij u past (en uw kat.)