I started following this tutorial here:
https://how2electronics.com/pulse-sensor-with-oled-arduino/
which uses a pulse sensor, buzzer and a 0.96" oled display and SSD1306 drivers. Except their display is different. Im using this one:
https://github.com/jandelgado/arduino/wiki/SSD1306-based-OLED-connected-to-Arduino.
I tried this sample sketch from that SSD1306 site: https://github.com/jandelgado/ardui...6_sample_adafruit/ssd1306_sample_adafruit.ino
but I only get half of the message on the screen as seen in the image below.
When I upload my final code I get some garbled pixels as seen in the other image below.
Is it a library issue?
This is my code:
https://how2electronics.com/pulse-sensor-with-oled-arduino/
which uses a pulse sensor, buzzer and a 0.96" oled display and SSD1306 drivers. Except their display is different. Im using this one:
https://github.com/jandelgado/arduino/wiki/SSD1306-based-OLED-connected-to-Arduino.
I tried this sample sketch from that SSD1306 site: https://github.com/jandelgado/ardui...6_sample_adafruit/ssd1306_sample_adafruit.ino
but I only get half of the message on the screen as seen in the image below.
When I upload my final code I get some garbled pixels as seen in the other image below.
Is it a library issue?
This is my code:
C-like:
//added by me
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#define OLED_MOSI 11 //D1
#define OLED_CLK 12 //D0
#define OLED_DC 9
#define OLED_CS 8
#define OLED_RESET 10
//end
#include <Adafruit_SSD1306.h>
#define OLED_Address 0x3C // 0x3C device address of I2C OLED. Few other OLED has 0x3D
//Adafruit_SSD1306 oled(128, 64); // create our screen object setting resolution to 128x64
//added from (https://github.com/jandelgado/arduino/blob/master/ssd1306_sample_adafruit/ssd1306_sample_adafruit.ino)by me
Adafruit_SSD1306 oled(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
//
int a=0;
int lasta=0;
int lastb=0;
int LastTime=0;
int ThisTime;
bool BPMTiming=false;
bool BeatComplete=false;
int BPM=0;
#define UpperThreshold 560
#define LowerThreshold 530
void setup() {
oled.begin(SSD1306_SWITCHCAPVCC, OLED_Address);
oled.clearDisplay();
oled.setTextSize(2);
}
void loop(){
if(a>127) {
oled.clearDisplay();
a=0;
lasta=a;
}
ThisTime=millis();
int value=analogRead(0);
oled.setTextColor(WHITE);
int b=60-(value/16);
oled.writeLine(lasta,lastb,a,b,WHITE);
lastb=b;
lasta=a;
if(value>UpperThreshold) {
if(BeatComplete) {
BPM=ThisTime-LastTime;
BPM=int(60/(float(BPM)/1000));
BPMTiming=false;
BeatComplete=false;
tone(8,1000,250);
}
if(BPMTiming==false)
{
LastTime=millis();
BPMTiming=true;
}
}
if((value<LowerThreshold)&(BPMTiming))
BeatComplete=true;
oled.writeFillRect(0,50,128,16,BLACK);
oled.setCursor(0,50);
oled.print("BPM:");
oled.print(BPM);
oled.display();
a++;
}