Stap 4: Programmeren van de Arduino Board
De onderstaande code uploaden naar de Arduino board, monteren van het LCD-scherm.
Opmerking: We gebruiken een "eBay LCD keypad schild" met pinout gedefinieerd als lcd (8, 9, 4, 5, 6, 7).
Als u van een andere LCD gebruikmaakt, moet u wellicht de LCD verbinding pin nummers in de code aanpassen aan.
Dit is de code die we gebruikt:
#include < LiquidCrystal.h > / / includes nodig bibliotheek
int INPIN = 2; input pulsen op pin 2
int buttonPin = A0; input knop op pin A0
LiquidCrystal lcd (8, 9, 4, 5, 6, 7); verbindingen met LCD
int OUTPIN = 3; uitvoer pulsen op pin 3
vluchtige lange int numint = 0; teller voor input pulsen
int safevalue = 500; beginwaarde van aantal pulsen als veilig beschouwd
VOID intservice(void) / / Dit heet voor elke input stijgende rand
{
numint ++;
}
VOID Setup {}
pinMode (buttonPin, INPUT);
pinMode (INPIN, INPUT);
pinMode (OUTPIN, uitvoer);
digitalWrite (OUTPIN, hoge);
digitalWrite (INPIN, laag);
attachInterrupt (0, intservice, stijgt); interrupt routine koppelen
LCD.begin(8,2);
LCD.Clear();
Serial.begin(9600);
}
void loop {}
int waarde;
lcd.setCursor (0, 0);
LCD.Print(numint); LCD.Print("CPS"); LCD.Print(""); aantal pulsen in tellingen per second(cps) afdrukken
lcd.setCursor(0,1);
waarde = analogRead(buttonPin); variabele voor knop input
Als (120 < waarde & & waarde < 150 & & (safevalue > = 0 & & safevalue < 1000)) {safevalue = safevalue + 100; goto voltooien;} //upon te drukken op de knop omhoog, safevalue verhoogt door 100 terwijl lager dan 1000
Als (270 < waarde & & waarde < 320 & & (safevalue > 0 & & safevalue < = 1000)) {safevalue = safevalue-100;} na het indrukken van de knop omlaag, vermindert de safevalue door 100 terwijl lager is dan 1000
Als (120 < waarde & & waarde < 150 & & (safevalue > = 1000 & & safevalue < 10000)) {safevalue = safevalue + 500;} na het indrukken van de knop omhoog, verhoogt safevalue met 500 terwijl hoger is dan 1000, tot 10000
Als (270 < waarde & & waarde < 320 & & (safevalue > 1000 & & safevalue < = 10000)) {safevalue = safevalue-500;} na het indrukken van de knop omlaag, vermindert safevalue door 500 terwijl hoger dan 1000
afwerking:
LCD.Print(safevalue); LCD.Print(""); de huidige safevalue afdrukken
numint = 0; nul teller
delay(1000);
Als (numint > safevalue) {digitalWrite (OUTPIN, laag); / / Pieper piept als puls count hoger dan toegestaan
delay(10);
digitalWrite (OUTPIN, hoge);
}
else {digitalWrite (OUTPIN, hoge);}
Serial.println(numint); Print pols tellen aan serial
}
Deze code programma's de Arduino te tellen gammastralen (of andere energetische dingen die op zijn minst enige 20keV tegelijk in het kristal dumpt) gedetecteerd door de Scintillatie detector, in graven per seconde (cps). Het zal ook een signaal afgeven aan de semafoon (die we verbinding maken in de volgende stap), als de waarde hoger dan het niveau van een geselecteerde "veilige" cps is. U kunt de vooraf ingestelde veilige waarde wijzigen door op de omhoog/omlaag-knop op het LCD Keypad schild. Gebeurtenissen kunnen ook worden gecontroleerd een een computer via een seriële monitor wanneer de Arduino board is verbonden met de PC via een USB-kabel.
Opmerking: We zullen gebruiken een USB-kabel voor het aandrijven van de Arduino. Als je wilt om het hele ding draagbare, volg deze instructies voor het aandrijven van de Arduino uit een batterij, of gewoon een gesoldeerd kopen online.