For some reason the if sentence in the end of the loop won´t work when I change the variable with the interrupt. The serial monitor shows that the variables "timer" and "minutt" really is changing, but somehow it does not affect the outcome of the if sentence. Any ideas why?
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <Wire.h>
#include "RTClib.h"
RTC_Millis rtc;
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 7, 6, 5, 4);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
volatile int minutt=3;
volatile int timer=0;
volatile int pinA=2;
volatile int pinB=3;
volatile int forsinkelse;
void setup() {
pinMode(pinA,INPUT);
pinMode(pinB,INPUT);
pinMode(11,OUTPUT);
Serial.begin(115200);
digitalWrite(pinA,HIGH);
digitalWrite(pinB,HIGH);
attachInterrupt(0,knobTurned,RISING);
Serial.begin(115200);
display.clearDisplay();
display.begin();
display.setContrast(39);
display.setTextSize(4);
display.setRotation(1);
display.setTextColor(BLACK);
display.println(minutt);
rtc.adjust(DateTime(DATE, TIME));
}
void loop() {
delay(forsinkelse);
display.clearDisplay();
DateTime now = rtc.now();
display.setTextSize(4);
display.setRotation(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println(now.hour(), DEC);
display.setCursor(0,42);
display.println(now.minute(), DEC);
display.display();
delay(forsinkelse);
forsinkelse=1000;
Serial.print(now.hour(), DEC);
Serial.print(" : ");
Serial.print(now.minute(), DEC);
Serial.print(" : ");
Serial.println(now.second(), DEC);
Serial.print(timer);
Serial.print(" : ");
Serial.println(minutt);
if(minutt<now.minute(),DEC){
analogWrite(11,0);
}else{analogWrite(11,200);}
}
void knobTurned(){
detachInterrupt(0);
forsinkelse=2500;
display.clearDisplay();
if(digitalRead(pinA)&&digitalRead(pinB)==1){
if(minutt==59){
minutt=0;
timer++;
}else
minutt++;
}
if(digitalRead(pinA)==1&&digitalRead(pinB)==0){
if(minutt==0){
minutt=59;
timer--;
}else
minutt--;
}
display.setTextSize(4);
display.setRotation(1);
display.setTextColor(BLACK);
display.setCursor(0,42);
display.println(minutt);
display.setCursor(0,0);
display.println(timer);
display.display();
attachInterrupt(0,knobTurned,RISING);
}