Croduino Basic2 with OLED 128x64 and MQ3 sensor setup

Customer:

I’ve been trying to connect a Croduino Basic2, OLED 128x64 display, and MQ3 sensor for several days now. Which pins do I connect the display and sensor to? I’m not getting any signal on the screen, nothing happens. I’m learning but this is driving me crazy.

Here’s my code:

#include
#include
#include
#include

#define OLED_RESET 4
int TIME_UNTIL_WARMUP = 900;
unsigned long time;
int analogPin = 0;
int val = 0;
Adafruit_SSD1306 display(OLED_RESET);

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
}

void loop() {
  delay(100);
  val = readAlcohol();
  printTitle();
  printWarming();
  time = millis()/1000;
  if(time<=TIME_UNTIL_WARMUP)
  {
    time = map(time, 0, TIME_UNTIL_WARMUP, 0, 100);
    display.drawRect(10, 50, 110, 10, WHITE); //Empty Bar
    display.fillRect(10, 50, time,10,WHITE);
  }
  display.display();
}

void printTitle()
{
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(22,0);
  display.println("Breath Analyzer");
}

void printWarming()
{
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,20);
  display.println("Warming up");
}

void printAlcohol(int value)
{
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(45,25);
  display.println(val);
}

void printAlcoholLevel(int value)
{
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(10,55);
  if(value =200 && value =280 && value =350 && value 450)
  {
    display.println("You are drunk!");
  }
}

int readAlcohol()
{
  int val = 0;
  int val1;
  int val2;
  int val3;
  display.clearDisplay();
  val1 = analogRead(analogPin);
  delay(10);
  val2 = analogRead(analogPin);
  delay(10);
  val3 = analogRead(analogPin);
  val = (val1+val2+val3)/3;
  return val;
}
Original message (Croatian)

već nekoliko dana pkušavam spojiti vaš Croduino basic 2, OLED 128x64 ekran, mq3 senzor …

pitanje … na koje pinove spajam ekran i senzor …

nemam nikakav signal na ekranu, ništa se ne dešava.. ok nisam profesionalac… učim se … ali me izluđuje totalno …

LP

[name removed]

ovo je code

#include

#include

#include

#include

#define OLED_RESET 4

int TIME_UNTIL_WARMUP = 900;

unsigned long time;

int analogPin = 0;

int val = 0;

Adafruit_SSD1306 display(OLED_RESET);

void setup() {

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

}

void loop() {

delay(100);

val = readAlcohol();

printTitle();

printWarming();

time = millis()/1000;

if(time<=TIME_UNTIL_WARMUP)

{

time = map(time, 0, TIME_UNTIL_WARMUP, 0, 100);

display.drawRect(10, 50, 110, 10, WHITE); //Empty Bar

display.fillRect(10, 50, time,10,WHITE);

}

display.display();

}

void printTitle()

{

display.clearDisplay();

display.setTextSize(1);

display.setTextColor(WHITE);

display.setCursor(22,0);

display.println(“Breath Analyzer”);

}

void printWarming()

{

display.setTextSize(2);

display.setTextColor(WHITE);

display.setCursor(0,20);

display.println(“Warming up”);

}

void printAlcohol(int value)

{

display.setTextSize(2);

display.setTextColor(WHITE);

display.setCursor(45,25);

display.println(val);

}

void printAlcoholLevel(int value)

{

display.setTextSize(1);

display.setTextColor(WHITE);

display.setCursor(10,55);

if(value =200 && value =280 && value =350 && value 450)

{

display.println(“You are drunk!”);

}

}

int readAlcohol()

{

int val = 0;

int val1;

int val2;

int val3;

display.clearDisplay();

val1 = analogRead(analogPin);

delay(10);

val2 = analogRead(analogPin);

delay(10);

val3 = analogRead(analogPin);

val = (val1+val2+val3)/3;

return val;

}

Originally submitted via email support on 18 September 2017. Migrated to the forum for community visibility.

Soldered Support:

The general approach is to connect and test one sensor at a time. Only when you’ve confirmed that each sensor works individually should you combine the code.

For the MQ3 sensor, see: MQ-3 Alcohol Sensor Circuit Built with an Arduino

The MQ3 has both an analog and digital output. You can use either. The digital output switches from high to low when the sensor crosses a certain threshold, while the analog pin gives a more precise reading value.

For the OLED, use this library: GitHub - olikraus/u8glib: Arduino Monochrom Graphics Library for LCDs and OLEDs · GitHub - the Adafruit library doesn’t work with this OLED.

The documentation is excellent for the Arduino library. If you don’t want to waste time, download the library and install it. This LCD is: U8GLIB_SSD1306_128X64

You need to use the constructor:

u8g(SCL pin, SDA pin, U8G_PIN_NONE, D/C pin, RST pin);

(replace it with what goes in your code)

Original message (Croatian)

generalno pravilo je spajati jedan po jedan senzor i tako testirati. Tek kada potvrdite da svaki senzor pojednično možete programirati, krećete spajati kod u jedan.

Ovdje pronađite upute za korištenje MQ3 senzora: MQ-3 Alcohol Sensor Circuit Built with an Arduino
dakle imate analogni i digitalni izlaz, možete koristiti kojega želite . Digitalni će mijenjati signal iz high u low ovisno o tome kada senzor pređe određen prag, dok će analogni pin davati precizniju vrijednost očitanja.

Za OLED; koristite ovaj library: GitHub - olikraus/u8glib: Arduino Monochrom Graphics Library for LCDs and OLEDs · GitHub mislim da Adafruitov ne radi za ovaj OLED.
dokumentacija je stvarno odlična za Arduino library. Ako ne želite gubiti puno vremena, skinite library, instalirajte ga.
Ovaj LCD je: U8GLIB_SSD1306_128X64
Trebate koristiti konstruktor: u8g(­SCL pin­, ­SDA pin­,U8G_PIN_NONE, ­D/C pin­ ­, ­RST pin­ ­);­
(zamijenite ga s onime koji bude u kodu)

Javite jel to radi!

Customer:

Which pin is U8G_PIN_NONE on the Croduino Basic2 board or on the Arduino Uno board? I don’t know anything about that.

Original message (Croatian)

koji je pinU8G_PIN_NONE na croduino basic2 ploči ili na arduino uno ploči ? o tome ne znam ništa … :frowning:

Soldered Support:

Here are the instructions:

Connection:

OLED..........CRODUINO
GND.............GND
VCC.............3.3V
D0 (CLK)........D13
D1 (DATA).......D11
RST (RESET).....D8
DC..............D9
CS (SS).........D10

The library you need is: GitHub - HobbyComponents/HCuOLED: An Arduino library for SSD1307 and SH1106 based OLED displays · GitHub

Original message (Croatian)

isprike na zakašnjelom odgovoru. Evo i uputa:
koristite kod iz privika

konekcije:
OLED…CRODUINO
GND…GND
VCC…3.3V
D0 (CLK)…D13
D1 (DATA)…D11
RST (RESET)…D8
DC…D9
CS (SS)…D10

library kojega trebate je: GitHub - HobbyComponents/HCuOLED: An Arduino library for SSD1307 and SH1106 based OLED displays · GitHub

​​

Attachment omitted in migration: OLED.ino