Files
Arduino/LeonardoProMicro/INPUT_SINGAL_MAGNETIC/INPUT_SINGAL_MAGNETIC.ino
2024-10-03 10:05:46 +02:00

156 lines
2.9 KiB
C++

#include <Servo.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <time.h>
///include <avr/eeprom.h>
Adafruit_SSD1306 display(4);
#define PinInSpeed 0 //on board: RXI
#define PinInCadence 7 //on board: 7
#define PinInLED 9 //on board: 9
#define PinLedSpeed 5 //on board: 5 WHITE
#define PinLedCadence 6 //on board: 6 ORANGE DEEP SMALL
#define PinLED 10 //on board: 10 ORANGE BIG
#define PinBuzer 16 //on board: 16 Buzzer
#define ServoPin 4
#define ServoMaxAngle 180
#define MaxAngle 179
#define MinAngle 1
Servo myservo;
int pos = 0;
int spd_cnt = 0;
int spd_cnt_incr = 0;
int cad_cnt = 0;
int cad_cnt_incr = 0;
int i_loop = 0;
void calcSpeed() {
spd_cnt = spd_cnt + 1;
// digitalWrite(PinLedSpeed, HIGH);
// delay(50);
//digitalWrite(PinLedSpeed, LOW);
Serial.print("spd_cnt_metodaS: ");
Serial.print(spd_cnt);
Serial.println();
// if ( spd_cnt >= 2 )
// {
//
// spd_cnt_incr = spd_cnt_incr+1;
// spd_cnt = 0;
// }
}
void calcCadence() {
cad_cnt = cad_cnt + 1;
digitalWrite(PinLedCadence, HIGH);
delay(50);
digitalWrite(PinLedCadence, LOW);
Serial.print("spd_cnt_metodaC: ");
Serial.print(cad_cnt);
Serial.println();
if ( cad_cnt >= 2 )
{
cad_cnt_incr = cad_cnt_incr+1;
cad_cnt = 0;
}
}
void setup() {
//DIPLAY settings
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
display.setRotation(0);
display.setTextSize(1);
// display.invertDisplay(1);
// display.dim(1);
//INPUT
pinMode(PinInSpeed, INPUT);
pinMode(PinInCadence, INPUT);
pinMode(PinInLED, INPUT);
//OUTPUT
pinMode(PinLedSpeed, OUTPUT);
pinMode(PinLedCadence, OUTPUT);
pinMode(PinLED, OUTPUT);
pinMode(PinBuzer, OUTPUT);
//SERVO
myservo.attach(ServoPin); // attaches the servo on pin 4 to the servo object
//Interrupts
// delay(5000);
attachInterrupt(digitalPinToInterrupt(PinInSpeed), calcSpeed, FALLING);
//attachInterrupt(digitalPinToInterrupt(PinInCadence), calcCadence, FALLING);
}
void loop() {
display.clearDisplay();
display.setCursor(0, 0);
display.println("SPD_cnt: ");
display.setCursor(50, 0);
display.println(spd_cnt);
display.setCursor(0, 10);
display.println("SPD_inc: ");
display.setCursor(50, 10);
display.println(spd_cnt_incr);
display.display();
Serial.print("spd_cnt: ");
Serial.print(spd_cnt);
Serial.print("spd_cnt_incr: ");
Serial.print(spd_cnt_incr);
Serial.println();
//digitalWrite(PinLedCadence, HIGH);
//spd_cnt
//spd_cnt_incr
for (i_loop = 0; i_loop < spd_cnt_incr; i_loop++)
{
digitalWrite(PinLED, HIGH);
delay(100);
digitalWrite(PinLED, LOW);
delay(100);
}
//
//for (i_loop = 0; i_loop < cad_cnt_incr; i_loop++)
//{
// digitalWrite(PinLED, HIGH);
// delay(100);
// digitalWrite(PinLED, LOW);
// delay(100);
//}
//cad_cnt_incr = 0;
spd_cnt_incr = 0;
delay(10);
// display.display();
display.clearDisplay();
}