Speedometer and Blinkers Arduino Code
Speedometer and Blinkers Arduino Code
Speedometer and Blinkers Arduino Code
#include <Adafruit_GPS.h>
#include <esp_now.h>
#include <WiFi.h>
#include <SPI.h>
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_HX8357.h>
#include <Adafruit_STMPE610.h>
#include <Fonts/DSEG7_Classic_Bold_60.h>
#include <Fonts/Nimbus_Mono_L_Bold_40.h>
#ifdef ESP8266
#define STMPE_CS 16
#define TFT_CS 0
#define TFT_DC 15
#define SD_CS 2
#elif defined(ESP32) && !defined(ARDUINO_ADAFRUIT_FEATHER_ESP32S2)
#define STMPE_CS 32
#define TFT_CS 15
#define TFT_DC 33
#define SD_CS 14
#elif defined(TEENSYDUINO)
#define TFT_DC 10
#define TFT_CS 4
#define STMPE_CS 3
#define SD_CS 8
#elif defined(ARDUINO_STM32_FEATHER)
#define TFT_DC PB4
#define TFT_CS PA15
#define STMPE_CS PC7
#define SD_CS PC5
#elif defined(ARDUINO_NRF52832_FEATHER)
#define TFT_DC 11
#define TFT_CS 31
#define STMPE_CS 30
#define SD_CS 27
#elif defined(ARDUINO_MAX32620FTHR) || defined(ARDUINO_MAX32630FTHR)
#define TFT_DC P5_4
#define TFT_CS P5_3
#define STMPE_CS P3_3
#define SD_CS P3_2
#else
// Anything else, defaults!
#define STMPE_CS 6
#define TFT_CS 9
#define TFT_DC 10
#define SD_CS 5
#endif
#define TFT_RST -1
Adafruit_HX8357 tft = Adafruit_HX8357(TFT_CS, TFT_DC, TFT_RST);
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
Adafruit_GPS GPS(&GPSSerial);
const int analogInPin = A5; // Analog input pin that the potentiometer is attached
to
int sensorValue = 0;
int sensPin=4;
int revolutions=0;
int rpm=0; // max value 32,767 16 bit
long startTime=0;
long elapsedTime;
uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //Jag hadde
bara en ESP32 hemma så jag kunde inte få tag på den andras mac-adress. Fylleri så
fort jag är i skolan
const int analogInPinBli = A10; // Analog input pin that the potentiometer is
attached to
esp_now_peer_info_t peerInfo;
void setup()
{
pinMode(sensPin, INPUT);
sensorValueBli = analogRead(analogInPinBli);
Serial.begin(250000);
Serial.println("HX8357D Featherwing touch test!");
if (!ts.begin()) {
Serial.println("Couldn't start touchscreen controller");
while (1);
}
Serial.println("Touchscreen started");
WiFi.mode(WIFI_STA);
// Init ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
// Register peer
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
// Add peer
if (esp_now_add_peer(&peerInfo) != ESP_OK){
Serial.println("Failed to add peer");
return;
}
tft.begin();
tft.fillScreen(HX8357_BLACK);
tft.fillRect(0, 0, 400, 50, HX8357_RED);
tft.setCursor(50, 50);
tft.setTextColor(HX8357_WHITE);
tft.setTextSize(4);
tft.println("STARTING...");
delay(1000);
}
void loop() {
ts.begin();
sensorValueBli = analogRead(analogInPinBli);
if (result == ESP_OK) {
Serial.println("Sent with success");
}
else {
Serial.println("Error sending the data");
}
delay(2000);
revolutions=0; rpm=0;
startTime=millis();
attachInterrupt(digitalPinToInterrupt(4),interruptFunction,RISING);
delay(1000);
detachInterrupt(2);
//now let's see how many counts we've had from the hall effect sensor and calc the
RPM
elapsedTime=millis()-startTime; //finds the time, should be very close to 1 sec
if(revolutions>0)
{
rpm=(max(1, revolutions) * (80000 * 0.15)/2 ) / elapsedTime; //(80000 *
radien )/antal magneter
}
TS_Point p = ts.getPoint();
sensorValue = analogRead(analogInPin);
Serial.print("\tY = ");
Serial.println(p.y);
tft.setCursor(54, 270);
TS_Point p = ts.getPoint();
tft.setTextColor(HX8357_WHITE);
tft.setTextSize(2);
Serial.println(((sensorValue-3000)/10));
tft.setFont(&DSEG7_Classic_Bold_60);
tft.println(((sensorValue-3000)/10));
tft.setFont(&Nimbus_Mono_L_Bold_40);
tft.setCursor(250, 270);
tft.setTextSize(1);
tft.print("%");
delay(3000);
tft.fillScreen(HX8357_BLACK);
tft.fillRect(0, 0, 400, 50, HX8357_RED);
tft.setCursor(76, 30);
tft.setTextColor(HX8357_WHITE);
tft.setTextSize(1);
tft.setFont(&Nimbus_Mono_L_Bold_40);
tft.println("Battery");
if (outMsg > 0) {
int outMsg = int(rpm);
tft.setCursor(128, 270);
tft.setTextColor(HX8357_WHITE);
tft.setTextSize(2);
tft.setFont(&DSEG7_Classic_Bold_60);
tft.print(outMsg , 0);
tft.setCursor(32, 270);
tft.setTextColor(HX8357_WHITE);
tft.setTextSize(2);
tft.setFont(&DSEG7_Classic_Bold_60);
tft.print("0");
tft.setTextSize(1);
tft.setFont(&Nimbus_Mono_L_Bold_40);
tft.setCursor(220, 270);
tft.print("km/h");
else {
tft.fillRect(40, 100, 300, 200, HX8357_BLACK); //(x, y, xbredd,
int outMsg = int(rpm);
Serial.println(outMsg);
Serial.println("");
tft.setCursor(32, 270);
tft.setTextColor(HX8357_WHITE);
tft.setTextSize(2);
tft.setFont(&DSEG7_Classic_Bold_60);
tft.print(outMsg, 0);
tft.setTextSize(1);
tft.setFont(&Nimbus_Mono_L_Bold_40);
tft.setCursor(220, 270);
tft.print("km/h");
}
}
else {
tft.setCursor(32, 270);
tft.setTextColor(HX8357_WHITE);
tft.setTextSize(2);
tft.setFont(&DSEG7_Classic_Bold_60);
tft.print("0");
tft.setCursor(128, 270);
tft.setTextColor(HX8357_WHITE);
tft.setTextSize(2);
tft.setFont(&DSEG7_Classic_Bold_60);
tft.print("0");
tft.setTextSize(1);
tft.setFont(&Nimbus_Mono_L_Bold_40);
tft.setCursor(220, 270);
tft.print("km/h");