Ok, My next issue.
I have my radio scanning channels, but can't manually control the selection as of yet.
I have a rotary encoder with a pushbutton.
I want to use the button to switch between manual and scan.
then use the encoder to select channels.
#include <Rotary.h>
Rotary r = Rotary(A0, A1);
#include <LiquidCrystal.h>
const int rs = 7, en = 8, d4 = 3, d5 = 4, d6 = 5, d7 = 6; //set up lcd pins
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int sig = 12; //squelch input
int clk = 9; //pll programming pins
int dat = 10; //pll programming pins
int ena = 11; //pll programming pins
//int led = 13;
int sum = 1; //scan channel
int encoder = 0; //rotary encoder status
void setup() {
pinMode(sig, INPUT_PULLUP);
pinMode(clk, OUTPUT);
pinMode(dat, OUTPUT);
pinMode(ena, OUTPUT);
//pinMode(led, OUTPUT);
digitalWrite(clk, LOW);
digitalWrite(dat, LOW);
digitalWrite(ena, LOW);
//Serial.begin(9600);
}
void loop() {
lcd.clear();
//lcd.print(" ");
switch (sum) { //which channels to scan
case 1:
five110();
//lcd.print(" ");
lcd.print("145.110Mhz");
break;
case 2:
five170();
// lcd.print(" ");
lcd.print("145.170Mhz");
break;
case 3:
five210();
// lcd.print(" ");
lcd.print("145.210Mhz");
break;
case 4:
five230();
//lcd.print(" ");
lcd.print("145.230Mhz");
break;
default:
seven015();
lcd.print("147.015Mhz");
// if nothing else matches, do the default
// default is optional
break;
}
enabl(); // go to Enable pulse
}
// zero: load 0 bit
void z() {
digitalWrite(dat, LOW); // Load 0 on dat
digitalWrite(clk, HIGH); // bring clock HIGH
digitalWrite(clk, LOW); // Then back low
}
// one: load 1 bit
void o() {
digitalWrite(dat, HIGH); // Load 1 on DAT
digitalWrite(clk, HIGH); // Bring pin CLOCK high
digitalWrite(clk, LOW); // Then back low
}
void enabl() {
digitalWrite(ena, HIGH); // Bring Enable high
digitalWrite(ena, LOW); // Then back low
delay(100);
while (digitalRead(12) == 1) ; //during signal detected, wait.
++sum; //increment scan
if (sum > 46) //reset channel to 1
{
sum = 1;
}
delay (100);
}
// programmed channels
void five110() {
z(); // 8192
z(); // 4096
o(); // 2048
o(); // 1024
z(); // 512
z(); // 256
z(); // 128
o(); // 64
o(); // 32
o(); // 16
o(); // 8
z(); // 4
o(); // 2
o(); // 1
}
void five170() {
z(); // 8192
z(); // 4096
o(); // 2048
o(); // 1024
z(); // 512
z(); // 256
o(); // 128
z(); // 64
z(); // 32
z(); // 16
z(); // 8
o(); // 4
o(); // 2
o(); // 1
}
void five210() {
z(); // 8192
z(); // 4096
o(); // 2048
o(); // 1024
z(); // 512
z(); // 256
o(); // 128
z(); // 64
z(); // 32
z(); // 16
o(); // 8
o(); // 4
o(); // 2
o(); // 1
}
void five230() {
z(); // 8192
z(); // 4096
o(); // 2048
o(); // 1024
z(); // 512
z(); // 256
o(); // 128
z(); // 64
z(); // 32
o(); // 16
z(); // 8
z(); // 4
o(); // 2
o(); // 1
}
void seven015() {
z(); // 8192
z(); // 4096
o(); // 2048
o(); // 1024
z(); // 512
o(); // 256
o(); // 128
o(); // 64
o(); // 32
o(); // 16
o(); // 8
z(); // 4
z(); // 2
z(); // 1
}