As a continiue of that http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1280139142
Updating
int rpm;
int Speed;
int fuel;
int turbo;
char kind_of_data;//******************** calibrate neddles here ********************
int fuel_LOW = 110;
int fuel_HIGH = 255;
int speed_LOW = 17;
int speed_HIGH = 165;
int rpm_LOW = 0;
int rpm_HIGH = 230;
int temp_LOW = 30;
int temp_HIGH = 255;
int leds_LOW = 127;
int leds_HIGH = 230;
//******************** calibrate neddles here ********************void setup(){
Serial.begin(115200);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);//calibration();
}void loop()
{
//****************************** READ DATA FROM SERIAL ******************************
while(Serial.available() > 0)
{kind_of_data = Serial.read();
if (kind_of_data == 'R' ) Read_Rpm();
if (kind_of_data == 'S' ) Read_Speed();
if (kind_of_data == 'F' ) Read_Fuel();
if (kind_of_data == 'T' ) Read_Turbo();}
//****************************** READ DATA FROM SERIAL END ******************************}
void Read_Rpm(){
delay(2);
int Rpm100 = Serial.read()- '0';
delay(2);
int Rpm10 = Serial.read()- '0';
delay(2);
int Rpm1 = Serial.read()- '0';int rpm = 100Rpm100 + 10Rpm10 + Rpm1;
setAircore(map(rpm,127,255,rpm_LOW,rpm_HIGH));
Leds(map(rpm,leds_LOW,leds_HIGH,0,9));
}void Read_Speed(){
delay(2);
int Speed100 = Serial.read()- '0';
delay(2);
int Speed10 = Serial.read()- '0';
delay(2);
int Speed1 = Serial.read()- '0';Speed = 100Speed100 + 10Speed10 + Speed1;
analogWrite(9,map(Speed,127,255,speed_LOW,speed_HIGH));
}void Read_Fuel(){
delay(2);
int Fuel100 = Serial.read()- '0';
delay(2);
int Fuel10 = Serial.read()- '0';
delay(2);
int Fuel1 = Serial.read()- '0';fuel = 100Fuel100 + 10Fuel10 + Fuel1;
analogWrite(10,map(fuel,127,255,fuel_LOW,fuel_HIGH));
}void Read_Turbo(){
delay(2);
int Turbo100 = Serial.read()- '0';
delay(2);
int Turbo10 = Serial.read()- '0';
delay(2);
int Turbo1 = Serial.read()- '0';turbo = 100Turbo100 + 10Turbo10 + Turbo1;
analogWrite(11,map(turbo,0,255,temp_LOW,temp_HIGH));
}void setAircore(float pos){
float sinCoilValue = 255sin(pos/40.58);
float cosCoilValue = 255cos(pos/40.58);if (sinCoilValue<=0) {
digitalWrite(14, LOW);
digitalWrite(15, HIGH);
}
else {
digitalWrite(14, HIGH);
digitalWrite(15, LOW);
}
if (cosCoilValue<=0) {
digitalWrite(8, LOW);
digitalWrite(4, HIGH);
}
else {
digitalWrite(8, HIGH);
digitalWrite(4, LOW);
}sinCoilValue = abs(sinCoilValue);
cosCoilValue = abs(cosCoilValue);analogWrite(6, sinCoilValue);
analogWrite(5, cosCoilValue);
}void Leds(int leds){
digitalWrite(12, LOW);
if ( leds == 0 ) shiftOut(7, 13, MSBFIRST, B00000000);
if ( leds == 1 ) shiftOut(7, 13, MSBFIRST, B00000001);
if ( leds == 2 ) shiftOut(7, 13, MSBFIRST, B00000011);
if ( leds == 3 ) shiftOut(7, 13, MSBFIRST, B00000111);
if ( leds == 4 ) shiftOut(7, 13, MSBFIRST, B00001111);
if ( leds == 5 ) shiftOut(7, 13, MSBFIRST, B00011111);
if ( leds == 6 ) shiftOut(7, 13, MSBFIRST, B00111111);
if ( leds == 7 ) shiftOut(7, 13, MSBFIRST, B01111111);
if ( leds == 8 ) shiftOut(7, 13, MSBFIRST, B11111111);
digitalWrite(12, HIGH);
}
and the calibration void:
that moves the neddles from 0 to their max position
void calibration(){
int delayTime = 20;
for( int calib=0; calib<256; calib++ ){
analogWrite(9,map(calib,0,255,17,165));
analogWrite(10,map(calib,0,255,110,255));
analogWrite(11,map(calib,0,255,30,255));
Leds(map(calib,0,255,0,9));
setAircore(calib);delay(delayTime);
}
delay(1000);for( int calib=255; calib>=0; calib-- ){
analogWrite(9,map(calib,0,255,17,165));
analogWrite(10,map(calib,0,255,110,255));
analogWrite(11,map(calib,0,255,30,255));
Leds(map(calib,0,255,0,9));
setAircore(calib);delay(delayTime);
}
delay(1000);analogWrite(9,0);
analogWrite(10,0);
analogWrite(11,0);}
and i am keeping that for the schematics
How to drive the aircores with L293D
Now i just thought that you can find wich are the 2 coils by checking the resistanse on the 4 pins
you can use the calibration(); into the void loop() and then trying some combinbations of connecting the cables
how to drive the 12V Lamps if you want
X-Sim settings
cool project, and didnt know about x-sim, thanks for that too
Dang... purdy!!!!