Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // EMF Detector for LED Bargraph v1.0
- // 5.12.2009
- // original code/project by Aaron ALAI - aaronalai1@gmail.com
- // modified for use w/ LED bargraph by Collin Cunningham - collin@makezine.com
- // remodified an reanrangede for Project BlackKitty by Ed Nielsen - ed@darkgeej.dk 2017
- #define NUMREADINGS 15 // raise this number to increase data smoothing
- int senseLimit = 6; // raise this number to decrease sensitivity (up to 1023 max)
- int probePin = 0; // analog 0
- int val = 0; // reading from probePin
- int LED1 = 2; //
- int LED2 = 3; // series
- int LED3 = 4; // in
- int LED4 = 5; // resistors
- int LED5 = 6; // with
- int LED6 = 7; // anodes
- int LED7 = 8; // bargraph
- int LED8 = 9; // LED
- int LED9 = 10; // to
- int LED10 = 11; // connections
- // variables for smoothing
- int readings[NUMREADINGS]; // the readings from the analog input
- int index = 0; // the index of the current reading
- int total = 0; // the running total
- int average = 0; // final average of the probe reading
- void setup() {
- // set pins
- pinMode(2, OUTPUT); // specify LED bargraph outputs
- pinMode(3, OUTPUT);
- pinMode(4, OUTPUT);
- pinMode(5, OUTPUT);
- pinMode(6, OUTPUT);
- pinMode(7, OUTPUT);
- pinMode(8, OUTPUT);
- pinMode(9, OUTPUT);
- pinMode(10, OUTPUT);
- pinMode(11, OUTPUT);
- // set serial
- Serial.begin(9600); // initiate serial connection for debugging/etc
- for (int i = 0; i < NUMREADINGS; i++)
- readings[i] = 0; // initialize all the readings to
- }
- void loop(){
- // Set values for sensors
- int S1 = 70;
- int S2 = 60;
- int S3 = 55;
- int S4 = 50;
- int S5 = 45;
- int S6 = 40;
- int S7 = 35;
- int S8 = 25;
- int S9 = 10;
- int S10 = 5;
- // Set inputs
- val = analogRead(probePin); // take a reading from the probe
- // Doing the math
- if(val >= 1){ // if the reading isn't zero, proceed
- val = constrain(val, 1, senseLimit); // turn any reading higher than the senseLimit value into the senseLimit value
- val = map(val, 1, senseLimit, 1, 1023); // remap the constrained value within a 1 to 1023 range
- total -= readings[index]; // subtract the last reading
- readings[index] = val; // read from the sensor
- total += readings[index]; // add the reading to the total
- index = (index + 1); // advance to the next index
- if (index >= NUMREADINGS) // if we're at the end of the array...
- index = 0; // ...wrap around to the beginning
- average = total / NUMREADINGS; // calculate the average
- // Tellings leds to be on or off
- if (average > S10){ // if the average is over 50 ...
- digitalWrite(LED10, HIGH); // light the first LED
- }
- else{ // and if it's not ...
- digitalWrite(LED10, LOW); // turn that LED off
- }
- if (average > S9){ // and so on ...
- digitalWrite(LED9, HIGH);
- }
- else{
- digitalWrite(LED9, LOW);
- }
- if (average > S8){
- digitalWrite(LED8, HIGH);
- }
- else{
- digitalWrite(LED8, LOW);
- }
- if (average > S7){
- digitalWrite(LED7, HIGH);
- }
- else{
- digitalWrite(LED7, LOW);
- }
- if (average > S6){
- digitalWrite(LED6, HIGH);
- }
- else{
- digitalWrite(LED6, LOW);
- }
- if (average > S5){
- digitalWrite(LED5, HIGH);
- }
- else{
- digitalWrite(LED5, LOW);
- }
- if (average > S4){
- digitalWrite(LED4, HIGH);
- }
- else{
- digitalWrite(LED4, LOW);
- }
- if (average > S3){
- digitalWrite(LED3, HIGH);
- }
- else{
- digitalWrite(LED3, LOW);
- }
- if (average > S2){
- digitalWrite(LED2, HIGH);
- }
- else{
- digitalWrite(LED2, LOW);
- }
- if (average > S1){
- digitalWrite(LED1, HIGH);
- }
- else{
- digitalWrite(LED1, LOW);
- }
- Serial.println(val); // use output to aid in calibrating
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement