Moj custom board comjuter će biti napravljen sa pro micro atmel i nokia 3310 displayom i imat će funkcije
-Trenutna brzina vozila
-Okretaji motora
-Prosječna potrošnja
-Trenutna potrošnja
-Vanjska temperatura
-Pritisak trubine
-Razina goriva
-Tempomat
Ovo je test i moje prvo programiranej na LCD-u
https://www.youtube.com/watch?v=yU-SPmx7YM0
Posle toga ništan nisam ni programirao jer sam polomio pinove na ekranu.
Spajanje
Senzor brzine,senzor radilice i žica za potrošnju sve informacije idu preko signala tako da ću za to mjerenje koristit funkciju attachInterrupt()
Primjera radi kod koji će služit za mjernje okretaja
Code: Select all
volatile byte half_revolutions;
unsigned int rpm;
unsigned long timeold;
#include <LCD5110_Basic.h>
LCD5110 myGLCD(3,4,5,6,7);
extern uint8_t arduino_logo[];
extern uint8_t oshw_logo[];
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];
int vrijeme = 0;
int sekunde = 0;
void setup()
{
myGLCD.InitLCD();
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(2), rpm_fun, RISING);
half_revolutions = 0;
rpm = 0;
timeold = 0;
}
void loop()
{
if (half_revolutions >= 10) {
//Update RPM every 20 counts, increase this for better RPM resolution,
//decrease for faster update
rpm = 15*1000/(millis() - timeold)*half_revolutions;
timeold = millis();
sekunde = timeold/1000;
half_revolutions = 0;
myGLCD.clrScr();
vrijeme = timeold / 100;
Serial.print(rpm,DEC);
Serial.print(" ");
Serial.print(sekunde);
Serial.print(".");
Serial.println(vrijeme);
myGLCD.setFont(BigNumbers);
myGLCD.printNumI(rpm, CENTER, 8);
myGLCD.setFont(SmallFont);
myGLCD.print("RPM ",RIGHT,40);
}
}
void rpm_fun()
{
half_revolutions++;
//Each rotation, this interrupt function is run twice
}
Vanjska temperatura,razina goriva i pritisak turbine koriste otpore za mjerenje, tako da će u tu svrhu ići mjernje volateže na ulazu
Code: Select all
#define NUM_SAMPLES 10
int sum = 0; // sum of samples taken
unsigned char sample_count = 0; // current sample number
float voltage = 0.0; // calculated voltage
float napon = 0.0;
void setup()
{
Serial.begin(10000);
pinMode(PWMizlaz,OUTPUT);
}
void loop()
{
// take a number of analog samples and add them up
while (sample_count < NUM_SAMPLES) {
sum += analogRead(A0);
sample_count++;
delay(5);
}
// calculate the voltage
// use 5.0 for a 5.0V ADC reference voltage
// 5.015V is the calibrated reference voltage
voltage = ((float)sum / (float)NUM_SAMPLES * 5.320) / 1023.0;
// send voltage for display on Serial Monitor
// voltage multiplied by 11 when using voltage divider that
// divides by 11. 11.132 is the calibrated voltage divide
// value
napon=voltage * 1;
Serial.print(napon);
Serial.println (" V");
sample_count = 0;
sum = 0;
}
Za tempmat ću ugradit servo motor na leptir gasa koji će oduzimat ili davat gas da bi održao zadanu brzinu, to ću zadnje radit kada sve kompletiram i prikupim sve informacije.
Detaljne radove ću psotavlajti ovdje u temi kako bi pomogao drugima a i sam bolje pratio projekat naravno možete i vi uskočiti s kojim savjetom ako negdje zapnem ili mislite da može se bolje odradit