Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Arduino - pomoc

Zdravím, předem chci upozornit že programování moc nerozumím a proto píší zde.

Objednal jsem si dozimetr na stránce
http://www.rhelectronics.net/store/radiation-detector-geiger-counter-diy-kit-second-edition.html
Sestavil ho, zakoupil arduino a vše připojil, podle návodů jsem k tomu přidal displej přes I2C knihovnu,
A zde mi začíná problém, potřeboval bych zajistit výstupní hodnotu “CPM” na displej a dále vytvořit novou hodnotu “CPM*(krát)0,00053”, abych docílil teoretického přepočtu na uSv.

- mám občas problém, že při vyšších hodnotách radiace se mi hodnoty “zaseknou” a pomůže jen restart arduina.

- pokud by byl někdo tak ochotný a pomohl mi, byl bych opravdu rád, děkuji :)
- cely program:

#include <SPI.h>

#define LOG_PERIOD 15000 //Logging period in milliseconds, recommended value 15000-60000.

#define MAX_PERIOD 60000 //Maximum logging period

unsigned long counts; //variable for GM Tube events

unsigned long cpm; //variable for CPM

unsigned int multiplier; //variable for calculation CPM in this sketch

unsigned long previousMillis; //variable for time measurement

void tube_impulse(){ //procedure for capturing events from Geiger Kit

counts++;

}

void setup(){ //setup procedure

counts = 0;

cpm = 0;

multiplier = MAX_PERIOD / LOG_PERIOD; //calculating multiplier, depend on your log period

Serial.begin(9600); // start serial monitor

// uncommennt if you have time-out problem to connect with Radiation Logger
// delay(2000);
// Serial.write('0'); // sending zero to avoid connection time out with radiation logger
// delay(2000);
// Serial.write('0'); // sending zero to avoid connection time out with radiation logger

pinMode(2, INPUT); // set pin INT0 input for capturing GM Tube events

digitalWrite(2, HIGH); // turn on internal pullup resistors, solder C-INT on the PCB

attachInterrupt(0, tube_impulse, FALLING); //define external interrupts

}

void loop(){ //main cycle

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > LOG_PERIOD){

previousMillis = currentMillis;

cpm = counts * multiplier;

Serial.print(cpm); // send cpm data to Radiation Logger

Serial.write(' '); // send null character to separate next data

counts = 0;

}

}

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny