Arduino geigermätare (4 / 6 steg)
Steg 4: Program
Kopiera klistra in följande kod i programmet Arduino:Obs: Du måste ha RX och TX unplugged från Arduino programmera den
För att programmera Följ en Arduino Pro Mini med en Arduino UNO denna länk
Geigermätare
Eric obildad
//
Introduktion
//
Använder en Sparkfun geigermätare för att mäta strålningen och omvandlar den till räknas
per minut. De beräknade räkningarna per minut visas på en LCD-skärm.
Varje räkning registreras med en akustisk och visuell signal genom användning av en
piezo speaker och en LED.
//
Setup:
//
-Anslut den LED och piezo talaren till stift 9 och 8 respektive
-Bifoga pins RX, GND, och VDD från LCD-skärmen till stift 2, GND och VCC på
Arduino.
-Fäst geigermätare strömkälla med stift VCC och GND och Anslut den
TX stift till RX stift på Arduino
//
#include < SoftwareSerial.h >
int i;
int antal;
int gamla = -1;
int kontroll.
float CPM;
flyta nu;
float tid;
int start;
int piezo = 8.
int ledde = 9.
char OnesString [10].
char DecimalString [10].
char TimerString [10].
SoftwareSerial mySerial (3, 2);
void setup() {
pinMode (piezo, produktionen);
pinMode ledde (, OUTPUT);
Serial.BEGIN(9600);
mySerial.begin(9600);
Delay(500);
mySerial.write(254); flytta markören till början av första raden
mySerial.write(128);
mySerial.write(""); tydlig display
mySerial.write("");
}
void loop() {
Jag = 0;
Count = 0;
Start = millis();
medan (jag < 30) {
digitalWrite (ledde, låg);
digitalWrite (piezo, låg);
om (Serial.available() > 0) {/ / om tillgänglig information
Kontrollera = Serial.read(); Läs seriell in
om (kontrollera > 0) {
greve ++; Om det är en, increment besöksräknare
digitalWrite (piezo, hög); Gör hörbara sount när det är en hit
digitalWrite (ledde, högt); Blinkar LED när det är en hit
}
}
Jag = millis();
jag = i - start;
jag = jag / 1000;
sprintf (TimerString, "% 2d", 30-i);
mySerial.write(254); markören till 7: e plats på andra raden
mySerial.write(192);
mySerial.write(TimerString);
}
CPM = räkna * 2;
gamla = count; Återställer "om"-uttryck
int cpm = CPM;
int temp = CPM * 1000;
int decimal = temp % (cpm * 1000);
sprintf (OnesString, "% 3d", cpm);
mySerial.write(254); Visar CPM
mySerial.write(128);
mySerial.write ("CPM:");
mySerial.write(OnesString);
}