Arduino в авто
- Войдите на сайт для отправки комментариев
Ребят все привет. Видел программу, работающую через обд на андройд. Которая имитирует звук разных машин, считывая обороты через обд.
Хочу ради интереса попробовать реализовать это на ардуино. Машина таойта спринтер ae100. Машинка старенькую специально взял, где не имеется обд разъем. первое начинание это взял сигнальный провод который идет на приборку тахометра. Имеется ардуино pro micro. Подключил дисплей чтоб видеть что получилось. Сделал с помощью прирывая считывание сигнала. Подключил. Может что напутал с формулой, или попробовать использовать attachInterrupt() FALLING. Потому что обороты показывал в 2 раза больше примерно. А иногда даже минусовые показатели. И когда я подключаю этот провод к ардуино, то приборка перестает работать. Поможет ли если я поставлю диод, чтоб от ардуины ничего по этому проводу в обратку не шло на приборную панель?
И собственно сам скейтч.
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_MOSI 2 #define OLED_CLK 3 #define OLED_DC 9 #define OLED_CS 12 #define OLED_RESET 8 Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); int i = 0; //счетчик анимации unsigned long lastflash; int RPM; void setup() { attachInterrupt(2,sens,RISING); //подключить прерывание на 2 пин при повышении сигнала Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC); // инициализация и очистка дисплея display.clearDisplay(); // Чистый дисплей display.cp437(true); //Включаем потдержку русского языка delay(200); } void loop() { if ((micros()-lastflash)>1000000){ //если сигнала нет больше секунды RPM=0; //считаем что RPM 0 } display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(10,0); display.clearDisplay(); display.println("RPM"); display.setCursor(10,30); display.setTextSize(3); display.setTextColor(WHITE); display.println(RPM); display.display(); delay(250); } void sens() { RPM=60/((float)(micros()-lastflash)/1000000); //расчет lastflash=micros(); //запомнить время последнего оборота }
Вот как! А вы все так не умеете! ;)
Я хотел было прокомментировать, но решил не портить произведение. Тут прекрасно все, от первого "Ребят", до закрывающей скобки.
Ну, разве что для колорита, поменять на "Ребьзя". ;)
Не все, только пингвины и поросяты
Не все, только пингвины и поросяты
Вы таки шото имеете против пингвинообразных и парнокопытных? Вы, стессняюсь спросить, расист?
пингворосят не знает даже гугл.
пропустил инициализацию пина
pinmode (2, input);
прерывание сменить на change наверное
переменные в ISR должны быть обьявлены как volatile
это как минимум что не так в программе :)
Спасибо, попробую
Вы таки шото имеете против пингвинообразных и парнокопытных? Вы, стессняюсь спросить, расист?
Отчего же? Некоторых из них я имею честь видеть за ужином. Пингвинов, правда, не пробовал...