Thanks for your replies so far :-)
I've been playing with this. Having got the frequency measurement part working on the car, I've taken that out whilst I try to develop the rest a little on the bench. I've replaced the frequency measurement with a potentiometer into analog A0 for test purposes.
I've added a start up test routine to illuminate individual LED's the flash all four before it runs the loop.
I'd like to add another pot. into another analog input to adjust the brightness of my LED's (yes, I know pin 12 is not PWM, I'll swap that later).
I currently have the following statements to control my LED's
digitalWrite(LED0, rpm > LED0_On_At);
digitalWrite(LED1, rpm > LED1_On_At);
digitalWrite(LED2, rpm > LED2_On_At);
digitalWrite(LED3, rpm > LED3_On_At);
I've tried replacing the digitalWrite with analogWrite instructions, but keep getting "too many arguments" messages. I've tried changing the parenthesis, but I'm obviously missing something......
If my "rpm" is greater than the value of "LED0_On_At" etc, how can I write the value of my analog input to an analog output (or more accurately analog input/4 to analog output)??
My full code:-
#include <LiquidCrystal.h>
const int LED0 = 9;
const int LED1 = 10;
const int LED2 = 11;
const int LED3 = 12;
unsigned long interval = 0;
unsigned long toggleTime = 0;
byte ledState = 1;
int first_light = 7200; //FIRST USER VARIABLE (first lights at)
int LED_Blick_RPM = 7500; //SECOND USER VARIABLE (Blink at)
int interval_between_lights = ((LED_Blick_RPM - first_light)/4);
int LED0_On_At = (first_light) ; //first light On at rpm?
int LED1_On_At = (first_light + (interval_between_lights)); //second light on at rpm?
int LED2_On_At = (first_light + (interval_between_lights2)); //third light on at rpm?
int LED3_On_At = (first_light + (interval_between_lights3)); //fourth light on at rpm?
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);
void setup() {
lcd.begin(16,2);
pinMode(LED0,OUTPUT);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
lcd.print ("analog_read_to_");
lcd.setCursor(0,1);
lcd.print ("LCD_With_Lights8");
delay (2000);
analogWrite(LED0, 10);
delay(500);
digitalWrite(LED1, HIGH);
delay(500);
digitalWrite(LED2, HIGH);
delay(500);
digitalWrite(LED3, HIGH);
delay(500);
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(50);
digitalWrite(LED0, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(50);
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(50);
digitalWrite(LED0, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(50);
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(50);
digitalWrite(LED0, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(50);
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(50);
digitalWrite(LED0, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(50);
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(50);
digitalWrite(LED0, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(50);
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(50);
digitalWrite(LED0, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(50);
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
delay(50);
digitalWrite(LED0, HIGH);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(50);
}
void loop(){
int rpm = (analogRead(0)*8);
lcd.print(LED0_On_At);
lcd.setCursor(6,0);
lcd.print(LED1_On_At);
lcd.setCursor(12,0);
lcd.print(LED2_On_At);
lcd.setCursor(0,1);
lcd.print(LED3_On_At);
lcd.setCursor(6,1);
lcd.print(LED_Blick_RPM);
lcd.setCursor(12,1);
lcd.print(rpm);
delay(20);
lcd.clear();
digitalWrite(LED0, rpm > LED0_On_At);
digitalWrite(LED1, rpm > LED1_On_At);
digitalWrite(LED2, rpm > LED2_On_At);
digitalWrite(LED3, rpm > LED3_On_At);
if(rpm > LED_Blick_RPM )
{
unsigned long now = millis();
if(now - toggleTime > interval)
{
ledState = !ledState;
digitalWrite(LED0, ledState);
digitalWrite(LED1, ledState);
digitalWrite(LED2, ledState);
digitalWrite(LED3, ledState);
toggleTime = now;
delay (5);
}
}
}