// STM32 Nucleo-C031C6 I2C Example
// Simulation: https://wokwi.com/projects/365421666018061313
#include "LiquidCrystal_I2C.h"
#include "stdio.h"
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
void setup() {
Serial.begin(115200);
Serial.println("Hello, STM32!");
lcd.init();
lcd.backlight();
lcd.setCursor(4, 0);
lcd.print("Hello, STM32");
lcd.setCursor(5, 2);
lcd.print("Welcome to");
lcd.setCursor(7, 3);
lcd.print("Wokwi!");
lcd.clear();
}
void loop() {
int analog_data_0 = analogRead(A0); //read data from analog pin 0
int analog_data_1 = analogRead(A1); //read data from analog pin 1
int output_digital = analog_data_0 - analog_data_1; //digital data from ADC
int output_digital_last = 0;
//double output_voltage = 0.0;
//In order to stop display from clearing itself when output is the same
//I check if previous value is the same as new, if it is, ignore printing it
while(1){
analog_data_0 = analogRead(A0);
analog_data_1 = analogRead(A1);
output_digital = analog_data_0 - analog_data_1;
//output_voltage = (output_digital*3.3)/1024; //convert to voltage
Serial.print("Digital output: ");
Serial.println(output_digital);
// Serial.print("Voltage output: ");
// Serial.println(output_voltage);
if(output_digital_last != output_digital){
lcd.clear();
delay(100);
lcd.print(output_digital);
}
output_digital_last = output_digital;
}
}