Scintillino - en Arduino-baserad snabb & smutsiga scintillationsräknare (4 / 6 steg)
Steg 4: Programmera Arduino styrelsen
Ladda upp koden nedan till Arduino styrelsen, montera LCD-skärmen.
Obs: Vi använder en "eBay LCD knappsatsen shield" med pinut definieras som lcd (8, 9, 4, 5, 6, 7).
Om du använder en annan LCD, kan du behöva justera LCD-anslutning pin-koder i koden.
Detta är den kod som vi använde:
#include < LiquidCrystal.h > / / innehåller nödvändiga bibliotek
int INPIN = 2; ingående pulser på pin 2
int buttonPin = A0; input-knappen på pin A0
LiquidCrystal lcd (8, 9, 4, 5, 6, 7); anslutningar till LCD
int OUTPIN = 3; output pulser på stift 3
flyktiga lång int numint = 0; räknare för input pulser
int safevalue = 500. startvärdet i antal pulser anses säkra
void intservice(void) / / Detta kallas för varje ingång stigande kant
{
numint ++;
}
void setup() {
pinMode (buttonPin, ingång);
pinMode (INPIN, indata);
pinMode (OUTPIN, OUTPUT);
digitalWrite (OUTPIN, hög);
digitalWrite (INPIN, låg);
attachInterrupt (0, intservice, RISING); bifoga avbrott rutin
LCD.BEGIN(8,2);
LCD.Clear();
Serial.BEGIN(9600);
}
void loop() {
int avalue;
lcd.setCursor (0, 0);
LCD.Print(numint); LCD.Print("CPS"); LCD.Print(""); Skriv ut antal pulser i räknas per second(cps)
lcd.setCursor(0,1);
aValue = analogRead(buttonPin); variabel för knappen input
om (120 < avalue & & avalue < 150 & & (safevalue > = 0 & & safevalue < 1000)) {safevalue = safevalue + 100; goto slut;} //upon trycka på upp-knappen, safevalue ökar med 100 medan lägre än 1000
om (270 < avalue & & avalue < 320 & & (safevalue > 0 & & safevalue < = 1000)) {safevalue = safevalue-100;} //upon att trycka på knappen ner, safevalue minskar med 100 medan lägre än 1000
om (120 < avalue & & avalue < 150 & & (safevalue > = 1000 & & safevalue < 10000)) {safevalue = safevalue + 500;} //upon trycka på upp-knappen, safevalue ökar med 500 medan högre än 1000, upp till 10000
om (270 < avalue & & avalue < 320 & & (safevalue > 1000 & & safevalue < = 10000)) {safevalue = safevalue-500;} //upon att trycka på knappen ner, safevalue minskar med 500 medan högre än 1000
ytbehandling:
LCD.Print(safevalue); LCD.Print(""); skriver ut aktuell safevalue
numint = 0; noll counter
Delay(1000);
om (numint > safevalue) {digitalWrite (OUTPIN, låg); / / Signalgivare Piper om puls räkningen är högre än tillåtet
Delay(10);
digitalWrite (OUTPIN, hög);
}
annat {digitalWrite (OUTPIN, hög);}
Serial.println(numint); Skriv ut puls räkningen till följetong
}
Denna kod program Arduino räkna gamma-rays (eller andra energisk saker som dumpar åtminstone några 20keV åt gången i kristallen) upptäcks av scintillation detektorn, i räknas per sekund (cps). Det skall också sända en signal till personsökare (som vi kommer att ansluta i nästa steg) om värdet är högre än en vald "säkra" cps nivå. Du kan ändra det förinställda säkra värdet genom att trycka på knappen upp/ner på LCD knappsatsen skölden. Händelser kan också övervakas en en dator via en seriell övervaka när Arduino styrelsen är ansluten till datorn via en USB-kabel.
Obs: Vi kommer att använda en USB-kabel till makten Arduino. Om du vill göra hela bärbara, Följ dessa instruktioner för att driva Arduino från ett batteri, eller helt enkelt köpa en lödd online.