#include #include #include #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); const int analogPin = 35; // A3 const int digitalPin = 2; // D2 void setup() { Serial.begin(9600); pinMode(digitalPin, INPUT); // SSD1306 OLED display initialization if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for(;;); } display.display(); delay(2000); // Pause for 2 seconds display.clearDisplay(); } void loop() { int analogValueRaw = analogRead(analogPin); int analogValue = map(analogValueRaw, 0, 4095, 0, 1023); // Scale the value to match the Pico's range int digitalValue = digitalRead(digitalPin); String airQuality = getAirQuality(analogValue); Serial.print("Analog Value (Raw): "); Serial.print(analogValueRaw); Serial.print(", Scaled Value: "); Serial.print(analogValue); Serial.print(", Digital Value: "); Serial.println(digitalValue); // Display scaled analog value and air quality condition on OLED display.clearDisplay(); display.setTextSize(2); // Normal 1:1 pixel scale display.setTextColor(SSD1306_WHITE); // Draw white text display.setCursor(0, 10); // Start at top-left corner display.print("Value: "); display.println(analogValue); display.setTextSize(1); display.setCursor(0, 40); display.print("Air Quality: "); display.println(airQuality); display.display(); delay(1000); } String getAirQuality(int analogValue) { if (analogValue <= 200) { return "Excellent"; } else if (analogValue <= 400) { return "Good"; } else if (analogValue <= 600) { return "Moderate"; } else if (analogValue <= 800) { return "Poor"; } else { return "Very Poor"; } }