//#include<avr/io.h>
#include <TinyWireM.h>
#include <Tiny4kOLED.h>
#include <PinChangeInterrupt.h>
#define pulses 3 // PB3
#define reset 4 // PB4
volatile long cpt = 0;
String nombre = "000";
int var = 0;
void pulses_prog(void) {
// increase value
cpt++;
}
void reset_prog(void) {
// reset value
disablePinChangeInterrupt(digitalPinToPinChangeInterrupt(pulses));
disablePinChangeInterrupt(digitalPinToPinChangeInterrupt(reset));
//Affich();
cpt=0;
enablePinChangeInterrupt(digitalPinToPinChangeInterrupt(pulses));
enablePinChangeInterrupt(digitalPinToPinChangeInterrupt(reset));
}
void setup()
{
pinMode(pulses, INPUT);
pinMode(reset, INPUT_PULLUP);
oled.begin(128, 64, sizeof(tiny4koled_init_128x64br), tiny4koled_init_128x64br);
// Two fonts are supplied with this library, FONT8X16 and FONT6X8
oled.setFont(FONT6X8);
// To clear all the memory
oled.clear();
oled.on();
//attach the new PinChangeInterrupts and enable event functions below
attachPinChangeInterrupt(digitalPinToPinChangeInterrupt(pulses), pulses_prog, RISING);
attachPinChangeInterrupt(digitalPinToPinChangeInterrupt(reset), reset_prog, FALLING);
enablePinChangeInterrupt(digitalPinToPinChangeInterrupt(pulses));
enablePinChangeInterrupt(digitalPinToPinChangeInterrupt(reset));
init_Display();
}
void loop()
{
Affich();
}
void init_Display() {
oled.clear();
oled.setFont(FONT8X16P);
oled.setCursor(5, 0);
oled.print("Blue Ring Tester");
}
void Affich() {
//disablePinChangeInterrupt(digitalPinToPinChangeInterrupt(pulses));
//disablePinChangeInterrupt(digitalPinToPinChangeInterrupt(reset));
//oled.setFont(FONT6X8);
//oled.setCursor(1, 2);
//oled.print(OCR0B);
nombre = String(cpt);
var = nombre.length();
switch (var) {
case 1:
nombre = "00" + String(cpt);
break;
case 2:
nombre = "0" + String(cpt);
break;
default:
nombre = String(cpt);
break;
}
//oled.setFont(FONT16X32DIGITS);
oled.setCursor(42, 4);
oled.print(nombre);
//debut = millis();
//delay(3000);
//cpt=0;
//enablePinChangeInterrupt(digitalPinToPinChangeInterrupt(pulses));
//enablePinChangeInterrupt(digitalPinToPinChangeInterrupt(reset));
}