My arduino gauge project

Therkhan7_3Turbo

Full Access Member
Joined
May 10, 2019
Posts
124
Reaction score
58
Location
FL
I don't think the LCD would be much of an Issue... My Kia uses LCD for the radio and when I was back home for the winter last year, it was ghosting bad ( to be honest the rear speakers wouldn't even work till it warmed up in the cab lol ) if it's good enough for an OEM manufacturer it's fine for this especially that in the cold most guys will let their trucks warm up a bit.
 

nightrunner84

Full Access Member
Joined
Dec 11, 2007
Posts
109
Reaction score
8
Location
Dayton, Ohio
This is an awesome project! Does anyone have the STL files, or the Arduino code? I'd like to add multiple gauges, and this would keep the dash really clean.
 

ifrythings

Full Access Member
Joined
Dec 17, 2011
Posts
734
Reaction score
485
Location
BC
This is an awesome project! Does anyone have the STL files, or the Arduino code? I'd like to add multiple gauges, and this would keep the dash really clean.

I can help you out with your code but just getting someone’s code isn’t going to work well unless you use the same sensors and circuits that they are using. What gauges do you want to make?

Here’s my temporary gauge setup till I get the double 7” screens to replace the instrument cluster.(hard to get a good picture of a screen with the camera)

You must be registered for see images attach
You must be registered for see images attach
 

nightrunner84

Full Access Member
Joined
Dec 11, 2007
Posts
109
Reaction score
8
Location
Dayton, Ohio
I'd like to make the same display the you put in the left side of the dash. I think that was a 20x4, right? Extrapolating the data can be done, I remember enough from my microprocessor class to adapt your code to what I need. What I don't remember, is the commands to display and format the sensor signals, and basic syntax of C++.
 

ifrythings

Full Access Member
Joined
Dec 17, 2011
Posts
734
Reaction score
485
Location
BC
I'd like to make the same display the you put in the left side of the dash. I think that was a 20x4, right? Extrapolating the data can be done, I remember enough from my microprocessor class to adapt your code to what I need. What I don't remember, is the commands to display and format the sensor signals, and basic syntax of C++.

Here is a quick simple 4 sensor setup, it reads coolant temperature, oil temperature, transmission temperature and oil pressure. The temperature sensor is the common ford 2 wire temp sensor used on EFI trucks and the Powerstroke engines, these are cheap <$5, they're waterproof and you can get a ton of them from used trucks for free (they are also pretty accurate being around 1-2F of my autometer gauge and you can calibrate them if you wanted to). The trans temp can be tapped off of the wire going to the TECA for the E4OD and won't mess up the TECA reading and you will get the internal fluid temp without adding another sensor. The oil pressure sensor is from a 2010 Chevy silverado 1500 4.3L, it's 1/4" npt, reads up to 120Psi and is the better Pressure Transducer sensor. (stay away from the cheap ebay/amazon pressure transducers as they don't last)

Ford temp sensor

Fun Fact: Ford hasn't changed their 2 wire sensors since the introduction in the 80s, the sensing element (NTC resistor) is the same as what they use in the automatic transmissions, they all read the same but may have different threads and plugs.

old style
You must be registered for see images attach


Newer style
You must be registered for see images attach


Chevy oil pressure transducer
You must be registered for see images attach


This will also control the high idle solenoid and cold timing advance solenoid (and the factory glow plug controller if wanted) (Note:relays required for all outputs) and has a manual high idle input for a switch. You can adjust when these turn off easily in the code or delete it if you don't want that function.

NOTE:There is no sensor averaging or sensor checking for out of range sensors (EG shorted wires or bad sensors). The LCD operation is depended on what brand LCD you got, how it's wired to the port expander and what address it is setup to for the I2C bus access.

NOTE:This is a snippet of my code i through together but haven't test directly, it does compile and should run. You will also need to download the LiquidCrystal_I2C library to use this.

Code:
/*                                         ARDUINO NANO
 *                                       ------|USB|------
 *                             NOT USED <|D13  |___|  D12|> NOT USED
 *        BAD 3.3VOLT OUTPUT, NEVER USE <|3V3         D11|> NOT USED
 *                             NOT USED <|AREF        D10|> NOT USED
 *                 ANALOG INPUT FOR ECT <|A0           D9|> NOT USED
 *                 ANALOG INPUT FOR EOT <|A1           D8|> NOT USED
 *                 ANALOG INPUT FOR TOT <|A2           D7|> NOT USED
 *                 ANALOG INPUT FOR EOP <|A3           D6|> NOT USED
 *                              IIC SDA <|A4           D5|> NOT USED
 *                              IIC SCL <|A5           D4|> DIGITAL OUTPUT FOR COLD TIMING ADVANCE SOLENOID
 *                             NOT USED <|A6           D3|> DIGITAL OUTPUT FOR HIGH IDLE SOLENOID
 *                             NOT USED <|A7           D2|> DIGITAL INPUT FOR MANUAL HIGH IDLE SWITCH
 *                               5V OUT <|5V          GND|> GROUND
 *                             NOT USED <|RESET     RESET|> NOT USED
 *                               GROUND <|GND         RX |> NOT USED
 *                             POWER IN <|VIN         TX |> NOT USED
 *                                       -----------------
 */
 
//Libraries
#include <LiquidCrystal_I2C.h>

// Set the LCD I2C address and pinout
//                 address,EN,RW,RS,D4,D5,D6,D6,BL,Polarity
LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE);

// ADC
// NOTE: This section is to calibrate the Analog to Digital Converter
// NOTE2: The ADC is only capable of reading VREF - 1 count. EXP. if VREF = 5V, ADC will return 4.995V (See datasheet for reason why)
#define VREF 5.003 // Measued the value of 5 volt pin and enter it here
#define ADC_V VREF/1024.0 // Take the reference voltage and divide by the amount of steps the ADC has

// Input Declarations

// Analog
#define ECT A0 // Engine Coolant Temperatur Sensor connected to Analog pin 0
#define EOT A1 // Enigne Oil Temperature Sensor connected to Analog pin 1
#define TOT A2 // Transmission Oil Temperature Sensor connected to Analog pin 2
#define EOP A3 // Engine Oil Pressure Sensor connected to Analog pin 3

// Digital
#define MHI 2 // Manual High Idle Switch connected to Digital pin 2


// Output Declarations

// Digital
#define High_Idle 3 // High Idle Solenoid connected to Digital Outpput pin 3
#define Cold_Adv  4 // Cold timing Advance Solenoid connected to Digital Output pin 4

// Variables
signed int ect_t = 0; // Engine Coolant Temperature
signed int eot_t = 0; // Engine Oil Temperature
signed int tot_t = 0; // Transmission Oil Temperature
int eop_p = 0; // Engine Oil Pressure
int eop_v = 0; // Engine Oil Pressure Voltage
byte MHI_Switch = 0; // Manual High Idle Switch
unsigned long last_time = millis(); // Used to hold the previous time the LCD was updated

//Custom °F symbol for character display
byte degtempF[8] = {
  B11000, // HH...
  B11000, // HH...
  B00111, // ..HHH
  B00100, // ..H..
  B00110, // ..HH.
  B00100, // ..H..
  B00100, // ..H..
  B00000, // .....
};

// Ford Temperature sensor lookup table in °F
// NOTE: "PROGMEM const" is required so the lookup table doesn't get loaded into ram
//       as that would use up all the ram, instead acess the lookup table from flash memory
PROGMEM const signed int Temp_ConvF[] = {
  302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
  302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 300,
  298, 295, 293, 291, 289, 288, 286, 282, 280, 279, 277, 275, 273, 270, 268,
  266, 264, 263, 262, 261, 260, 259, 257, 255, 254, 253, 252, 251, 250, 248,
  247, 246, 245, 244, 243, 241, 240, 239, 237, 236, 235, 234, 233, 232, 231,
  230, 229, 228, 227, 226, 226, 225, 224, 223, 222, 221, 221, 220, 219, 218,
  217, 217, 216, 216, 215, 214, 213, 212, 212, 211, 210, 209, 208, 208, 208,
  207, 206, 205, 204, 203, 203, 202, 201, 201, 200, 200, 199, 199, 199, 198,
  198, 197, 197, 196, 196, 195, 194, 194, 193, 193, 192, 192, 191, 191, 190,
  190, 190, 189, 189, 188, 188, 187, 187, 186, 185, 185, 184, 184, 183, 183,
  182, 182, 181, 181, 181, 180, 180, 179, 178, 178, 177, 177, 176, 176, 175,
  175, 174, 174, 174, 173, 173, 172, 172, 172, 172, 172, 171, 171, 171, 170,
  170, 169, 169, 169, 168, 168, 167, 167, 167, 166, 166, 165, 165, 165, 164,
  164, 163, 163, 163, 163, 163, 162, 162, 162, 161, 161, 160, 160, 160, 159,
  159, 158, 158, 158, 157, 157, 157, 156, 156, 156, 156, 155, 155, 155, 155,
  154, 154, 154, 154, 154, 154, 154, 154, 154, 153, 153, 153, 153, 152, 152,
  152, 151, 151, 151, 151, 150, 150, 150, 150, 149, 149, 149, 149, 148, 148,
  148, 147, 147, 147, 147, 146, 146, 146, 146, 145, 145, 145, 145, 145, 145,
  145, 144, 144, 144, 144, 143, 143, 143, 143, 142, 142, 142, 142, 141, 141,
  141, 141, 140, 140, 140, 140, 139, 139, 139, 138, 138, 138, 138, 137, 137,
  137, 137, 136, 136, 136, 136, 136, 136, 136, 136, 135, 135, 135, 135, 134,
  134, 134, 134, 133, 133, 133, 133, 132, 132, 132, 132, 131, 131, 131, 131,
  130, 130, 130, 129, 129, 129, 129, 128, 128, 128, 128, 127, 127, 127, 127,
  127, 127, 127, 127, 126, 126, 126, 126, 125, 125, 125, 125, 124, 124, 124,
  124, 123, 123, 123, 123, 122, 122, 122, 122, 121, 121, 121, 120, 120, 120,
  120, 119, 119, 119, 119, 118, 118, 118, 118, 118, 118, 118, 118, 117, 117,
  117, 117, 116, 116, 116, 116, 115, 115, 115, 115, 114, 114, 114, 114, 113,
  113, 113, 113, 112, 112, 112, 111, 111, 111, 111, 110, 110, 110, 110, 109,
  109, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 107, 107, 107, 107,
  106, 106, 106, 106, 105, 105, 105, 105, 104, 104, 104, 104, 103, 103, 103,
  103, 102, 102, 102, 102, 102, 101, 101, 101, 101, 101, 100, 100, 100, 100,
  100, 100, 100, 100, 100, 100,  99,  99,  99,  99,  99,  98,  98,  98,  98,
   98,  97,  97,  97,  97,  97,  96,  96,  96,  96,  96,  95,  95,  95,  95,
   95,  94,  94,  94,  94,  94,  93,  93,  93,  93,  93,  92,  92,  92,  92,
   92,  91,  91,  91,  91,  91,  91,  91,  91,  91,  91,  90,  90,  90,  90,
   90,  89,  89,  89,  89,  89,  88,  88,  88,  88,  88,  87,  87,  87,  87,
   87,  86,  86,  86,  86,  86,  85,  85,  85,  85,  85,  84,  84,  84,  84,
   84,  83,  83,  83,  83,  83,  82,  82,  82,  82,  82,  82,  82,  82,  82,
   82,  81,  81,  81,  81,  81,  80,  80,  80,  80,  80,  79,  79,  79,  79,
   79,  78,  78,  78,  78,  78,  77,  77,  77,  77,  77,  76,  76,  76,  76,
   76,  75,  75,  75,  75,  75,  74,  74,  74,  74,  74,  73,  73,  73,  73,
   73,  73,  73,  73,  73,  73,  72,  72,  72,  72,  72,  71,  71,  71,  71,
   71,  70,  70,  70,  70,  70,  69,  69,  69,  69,  69,  68,  68,  68,  68,
   68,  67,  67,  67,  67,  66,  66,  66,  66,  66,  65,  65,  65,  65,  64,
   64,  64,  64,  64,  64,  64,  64,  64,  63,  63,  63,  63,  63,  62,  62,
   62,  62,  61,  61,  61,  61,  61,  60,  60,  60,  60,  59,  59,  59,  59,
   59,  58,  58,  58,  58,  58,  57,  57,  57,  57,  57,  56,  56,  56,  56,
   55,  55,  55,  55,  55,  55,  55,  55,  55,  54,  54,  54,  54,  54,  53,
   53,  53,  53,  52,  52,  52,  52,  52,  51,  51,  51,  51,  50,  50,  50,
   50,  50,  49,  49,  49,  49,  48,  48,  48,  48,  47,  47,  47,  47,  46,
   46,  46,  46,  46,  46,  46,  46,  45,  45,  45,  45,  44,  44,  44,  44,
   43,  43,  43,  43,  42,  42,  42,  42,  41,  41,  41,  41,  40,  40,  40,
   40,  39,  39,  39,  39,  38,  38,  38,  37,  37,  37,  37,  37,  37,  37,
   36,  36,  36,  36,  35,  35,  35,  35,  34,  34,  34,  34,  33,  33,  33,
   32,  32,  32,  32,  31,  31,  31,  30,  30,  30,  29,  29,  29,  28,  28,
   28,  28,  28,  28,  27,  27,  27,  26,  26,  26,  25,  25,  25,  24,  24,
   24,  23,  23,  23,  22,  22,  22,  21,  21,  21,  20,  20,  20,  19,  19,
   19,  19,  18,  18,  18,  17,  17,  17,  16,  16,  16,  15,  15,  15,  14,
   14,  14,  13,  13,  12,  12,  11,  11,  10,  10,  10,  10,   9,   9,   9,
    8,   8,   7,   7,   6,   6,   5,   5,   4,   4,   3,   3,   2,   2,   1,
    1,   0,   0,  -1,  -1,  -1,  -1,  -2,  -2,  -3,  -3,  -4,  -4,  -5,  -6,
   -7,  -8,  -9, -10, -10, -11, -12, -13, -14, -15, -16, -17, -17, -18, -19,
  -19, -20, -21, -22, -23, -24, -25, -26, -27, -27, -28, -28, -29, -30, -31,
  -32, -33, -34, -35, -36, -37, -37, -38, -39, -40, -40, -40, -40, -40, -40,
  -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
  -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
  -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
  -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
  -40, -40, -40, -40,
};


// Note: "pgm_read_word" is needed so we can access the lookup table from flash memory
void Get_Sensors() {
  ect_t = analogRead(ECT); // Get Engine Coolant Temperature ADC value
  ect_t = pgm_read_word(&Temp_ConvF [ect_t]); // Lookup ADC value to temperature
 
  eot_t = analogRead(EOT); // Get Engine Oil Temperature ADC value
  eot_t = pgm_read_word(&Temp_ConvF [eot_t]); // Lookup ADC value to temperature

  tot_t = analogRead(TOT); // Get Transmission Oil Temperature ADC value
  tot_t = pgm_read_word(&Temp_ConvF [tot_t]); // Lookup ADC value to temperature
 
  eop_p = analogRead(EOP); // Get Engine Oil Pressure ADC value
  eop_v = eop_p * ADC_V; // Calculate to voltage
  eop_p *= 0.030887; // Calculate to pressure
  eop_p -= 20.826; // Subtract offset
} // End of Get_Sensors Function

// LCD layout for referance
/*********************
    Postion
    12345678901234567890
L 1*ECT:###F
I 2*EOT:###F
N 3*TOT:###F
E 4*EOP:###Psi
*********************/

void LCD_Update() {
  lcd.setCursor(0, 0); // First line, postion 1
  lcd.print("ECT:"); // Write ECT: to Lcd
  lcd.print(ect_t); // Write Engine Coolant Temperature to Lcd
  lcd.write(byte(0)); // Write °F
  lcd.print(" "); // Clear extra charaters when going from 3 to 2 digit
 
  lcd.setCursor(0, 1); // Second line, postion 1
  lcd.print("EOT:"); // Write EOT: to Lcd
  lcd.print(eot_t); // Write Engine Oil Temperature to Lcd
  lcd.write(byte(0)); // Write °F
  lcd.print(" "); // Clear extra charaters when going from 3 to 2 digit
 
  lcd.setCursor(0, 2); // Third line, postion 1
  lcd.print("TOT:"); // Write TOT: to Lcd
  lcd.print(tot_t); // Write Transmission Oil Temperature to Lcd
  lcd.write(byte(0)); // Write °F
  lcd.print(" "); // Clear extra charaters when going from 3 to 2 digit

  lcd.setCursor(0, 4); // Fourth line, postion 1
  lcd.print("EOP:"); // Write EOP: to Lcd
  lcd.print(eop_p); // Write Engine Oil Pressure to Lcd
  lcd.print("Psi"); // Write Psi to Lcd
  lcd.print(" "); // Clear extra charaters when going from 3 to 2 digit
} // End of LCD_Update Function


// This only runs once on intial power on
void setup() {
  pinMode(High_Idle, OUTPUT); // Set High Idle as Output
  pinMode(Cold_Adv, OUTPUT); // Set Cold Timing Advance as Output
  pinMode(MHI_Switch, INPUT); // Set Manual High Idle Switch as Input
  digitalWrite(High_Idle, HIGH); // Set the inital High Idle Solenoid state to on
  digitalWrite(Cold_Adv, HIGH); // Set the intial Cold Timing Advance Solenoid to on
//Serial.begin(9600); // Serial Monitor

// Setup the LCD
  lcd.begin(20, 4); // Init the LCD for 20 chars and 4 lines
  lcd.setBacklight (HIGH); // Turn LCD backlight on
  lcd.createChar(0, degtempF); // Load custom °F character into LCD
  lcd.home(); // Go to line 1, postion 1
} // End of setup function

void loop() {
  Get_Sensors(); // This updates the sensors valves in ram, this runs very fast!
  if(millis() - last_time >= 100){ // If 100mS has elapsed update the LCD (10 updates per second)
    LCD_Update(); // Update LCD
    last_time = millis(); // Set to current time so it can be rechecked above
  }
 
// High Idle and Cold Timing Advance on below 120°F Engine Coolant Temperature
  MHI_Switch = digitalRead(MHI); // Read the state of the Manual High Idle Switch
  if (MHI_Switch == HIGH) digitalWrite(High_Idle, HIGH); // If Manual High Idle switch is on, turn on High Idle solenoid
  else if (ect_t > 120) digitalWrite(High_Idle, LOW); // High Idle Solenoid is off if Engine Coolant Temperature is higher than 120°F
  if (ect_t > 120) digitalWrite(Cold_Adv, LOW); // Cold Timing Advance Solenoid is off if Engine Coolant Temperature is higher than 120°F
 
} // End of loop Function
 
Last edited:

Jubjub

Registered User
Joined
Dec 18, 2017
Posts
6
Reaction score
6
Location
E. TX
I had forgotten about my own thread. I got busy and put this project on the back burner. I did get the fuel pressure transducer hooked up to my diesel ranger, but the readings bounced all over the place. Could be a bad connection. Good to know about the sensors you are using. I'll have to pickup a few.

How are you making the physical connections to the arduino? I'd like to be able to solder to the arduino and go into a connector
 

retiredinhomer

Full Access Member
Joined
Aug 10, 2016
Posts
61
Reaction score
23
Location
Alaska
I had forgotten about my own thread. I got busy and put this project on the back burner. I did get the fuel pressure transducer hooked up to my diesel ranger, but the readings bounced all over the place. Could be a bad connection. Good to know about the sensors you are using. I'll have to pickup a few.

How are you making the physical connections to the arduino? I'd like to be able to solder to the arduino and go into a connector

Are you using shielded cable. Is it a single wire connection? Might be an interference problem.
 

ifrythings

Full Access Member
Joined
Dec 17, 2011
Posts
734
Reaction score
485
Location
BC
I had forgotten about my own thread. I got busy and put this project on the back burner. I did get the fuel pressure transducer hooked up to my diesel ranger, but the readings bounced all over the place. Could be a bad connection. Good to know about the sensors you are using. I'll have to pickup a few.

How are you making the physical connections to the arduino? I'd like to be able to solder to the arduino and go into a connector

The readings bouncing all over the place is from the lack of averaging, lack of a low pass filter into your ADC or could be exactly what your fuel pressure is doing. On my truck the fuel pressure waves around about 1 PSI and a non-dampened mechanical gauge shows the same thing.

For the lowpass filter try this circuit below. This also protects your ADC input incase the sensor wire shorts to battery voltage.

You must be registered for see images attach


For a plug I'm using JAE Electronics MX23A connectors, they are not super cheap but they do have standard pin spacing to fit onto prototyping boards and are waterproof. You do have to buy the male, female, pins and locking tab separately though.
https://www.digikey.ca/products/en/...ular-connectors-headers-male-pins/314?k=mx23A

Thank you for the code, and the sensor ID's.

I have a R3 that I'm using now, You're using a nano? Is this it?

https://www.amazon.com/Arduino-A000005-ARDUINO-Nano/dp/B0097AU5OU

It has two more analog inputs than mine, and it's CHEAP!

I'm sorry to ask again, but do you have the STL file for the cluster panel you made?

Search Amazon for Arduino nano and you can get the chinese versions for less than $5-$6, I buy them in packs of 5 so they are cheaper, only thing that is wrong with them is the 3.3v output is way out of whack so don't use that output.

I made the cluster panel in Fusion 360, it was designed for a 3.5" graphical LCD that I thought I could reprogram from a 3D Printer but didn't work. If you want to skip the crappy character displays lookup Nextion displays as that's what I have been playing with and it seems to perform very well in the cold temperature. Hopefully you can edit the stl file to fit whatever screen you want to use, just remember that the black surround of the instrument cluster can cover a lot of space.
 

Attachments

  • instrument cluster lcd v9.zip
    29 KB · Views: 7

aggiediesel01

Full Access Member
Joined
Dec 29, 2016
Posts
531
Reaction score
417
Location
Houston, TX
Here’s my temporary gauge setup till I get the double 7” screens to replace the instrument cluster.(hard to get a good picture of a screen with the camera)

I don’t want to derail this thread but I’d like to know more about the other goodies you’ve taken the time to add. Do you have a build thread?
 

ifrythings

Full Access Member
Joined
Dec 17, 2011
Posts
734
Reaction score
485
Location
BC
I don’t want to derail this thread but I’d like to know more about the other goodies you’ve taken the time to add. Do you have a build thread?

Here’s my build thread but I’ve been slacking on the updates https://www.oilburners.net/threads/project-crewcab.79692/

As for upgrades I’ve done:
6.4l electro viscous fan
Electronic climate control
Newer superduty steering wheel
I added the airbag system from a f150 so the airbag in the newer steering wheel works
Remote start and security system
Backup camera and emblem from a newer truck
Backup sensor system from a newer truck
04 abs system to go with the 05+ axle swap
Upfitter switches
Chevy auto dimming rearview mirror
08+ Power heats seats and console
Auto window up/down for all windows
I’m working on adding the keypad entry from the newer trucks
Newer electric transfer case to go with the 05+ axle swap
Custom gauge setup in the instrument cluster

May have forgotten a few things
 

nightrunner84

Full Access Member
Joined
Dec 11, 2007
Posts
109
Reaction score
8
Location
Dayton, Ohio
OK, I've got the circuit built, and I'm trying to compile and download the code. I keep getting " 'NEGATIVE' was not declared in this scope ". I think I have the wrong Liquid_Crystal_I2C.h library. Did you have this problem? It seems to compile otherwise.

Also, I noticed that you're using two of the analog pins to run the display. Can digital pins be used instead? That would give me two more analog inputs.
 

ifrythings

Full Access Member
Joined
Dec 17, 2011
Posts
734
Reaction score
485
Location
BC

nightrunner84

Full Access Member
Joined
Dec 11, 2007
Posts
109
Reaction score
8
Location
Dayton, Ohio
That worked! It compiles and uploads now. The display isn't working. Looks a little different than the one in your picture, but i think that may be because its newer? I bought it two days ago. Its hooked up right, I think. This is the Amazon page I bought it from:

https://www.amazon.com/gp/product/B07QLRD3TM/ref=ppx_yo_dt_b_asin_title_o02_s01?ie=UTF8&psc=1

Here is the board:
https://www.amazon.com/gp/product/B0097AU5OU/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1

Also, I checked the Serial Monitor, it's blank, there's no data moving.

Thank you again for the help!

You must be registered for see images attach
 
Last edited:

Forum statistics

Threads
91,217
Posts
1,128,471
Members
24,044
Latest member
Mnlx
Top