Hi guys I wrote this code to generate wave from the ultrasonic sensor but when I changed or delete the OCR value nothing happens do you have any advice for me?
#include "LiquidCrystal.h" //lcd libary
#define myOutputPin1 8
#define myOutputPin2 9
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5); //LCD object Parameters: (rs, enable, d4, d5, d6, d7)
int ledPins[] = {0,1,2,3,4,5,6,7};
int i;
const int trigPin = 12; //trig pin connection
const int echoPin = 11; //echopin connection
long duration;
int distanceCm;
float liquid;
int x;
int toggle0 = 0;
int toggle1 = 0;
void setup() { // setup perameter
lcd.begin(16,2);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lcd.setCursor(0,0);
lcd.print(" Distance ");
lcd.setCursor(0,1);
lcd.print(" Measurement ");
delay(2000);
lcd.clear();
for(int i = 0; i <= 7; i++){
pinMode(ledPins[i],OUTPUT);
}
pinMode(myOutputPin1,OUTPUT);
pinMode(myOutputPin2,OUTPUT);
cli();//stop interrupts
TCCR2A = 0;// set entire TCCR2A register to 0
TCCR2B = 0;// same for TCCR2B
TCNT2 = 0;//initialize counter value to 0
// set compare match register for 2khz increments
OCR2A = x;// = (16*10^6) / (2000*64) - 1 (must be <256)
// turn on CTC mode
TCCR2A |= (1 << WGM21);
// Set CS22 and CS21 bits for 256 prescaler
TCCR2B |= (1 << CS22)|(1<<CS21) ;
// enable timer compare interrupt
TIMSK0 |= (1 << OCIE0A);
TCCR1A = 0;// set entire TCCR2A register to 0
TCCR1B = 0;// same for TCCR2B
TCNT1 = 0;//initialize counter value to 0
// set compare match register for 2khz increments
OCR1A = x;// = (16*10^6) / (2000*64) - 1 (must be <256)
// turn on FPWM mode
TCCR1B |= (1 << WGM13)&(1<<WGM12);
TCCR1A |= (1 << WGM11)&(1<<WGM10);
// Set CS12 bits for 256 prescaler
TCCR1B |= (1<<CS12) ;
TIMSK1 |= (1 << OCIE1A);
// enable timer compare interrupt
sei();//allow interrupts
}
ISR(TIMER0_COMPA_vect){//timer0 interrupt 2kHz toggles pin 8
//generates pulse wave of frequency 2kHz/2 = 1kHz (takes two cycles for full wave- toggle high then toggle low)
if (toggle0){
digitalWrite(myOutputPin1,HIGH);
toggle0 = 0;
}
else{
digitalWrite(myOutputPin1,LOW);
toggle0 = 1;
}
}
ISR(TIMER1_COMPA_vect){//timer1 interrupt 2kHz toggles pin 9
//generates pulse wave of frequency 2kHz/2 = 1kHz (takes two cycles for full wave- toggle high then toggle low)
if (toggle1){
digitalWrite(myOutputPin2,HIGH);
toggle1 = 0;
}
else{
digitalWrite(myOutputPin2,LOW);
toggle1 = 1;
}
}
void loop() { // loop of flow program
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm= duration*0.034/2;
delay(10);
lcd.setCursor(0,0);
lcd.print("Distance:");
lcd.print(distanceCm);
lcd.print(" Cm ");
delay(10);
int x=map(distanceCm,3,422,0,255);
showBinNumber(x);
delay(10);
}
void showBinNumber(int num) {
for (int i=0; i<8; i++) {
if (num%2)
digitalWrite(ledPins[i], LOW);
else
digitalWrite(ledPins[i], HIGH);
num/=2;
}
}