Ola,
Primeiro topico, estou fazendo um projeto com um display OLED, modulo de SDCARD e uma célula de carga, mas estou encontrando problemas com o display e o modulo.
Segue abaixo o codigo:
/*
SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4 (for MKRZero SD: SDCARD_SS_PIN)
*
**DISPLAY O LED 128X64
The pins for I2C are defined by the Wire-library.
On an arduino UNO: A4(SDA), A5(SCL)
*/
#include <HX711.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SD.h>
#include <SPI.h>
//MACRO PARA SETUP
#define DT A1
#define SCK A0
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
//OBJETOS
HX711 escala; // Cria o Objeto HX711 (Uso da celula de carga)
File myFile; // Cria o objeto File (Uso para salvar em SD os dados.)
//VARIÁVEIS
const int chipSelect = 4; //Chip select do modulo da gravacao SD
float forca,x;
//INICIO DO SETUP
void setup()
{
// SETUP da Celula de carga
escala.begin (DT,SCK);
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("Display Falhou"));
for (;;);
}
delay(2000);
display.clearDisplay();//Remove contents of display
pinMode (chipSelect, OUTPUT);
// SETUP do Display
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
//Seta o cursor para o display
display.setCursor(2,10);
display.print("Tara: ");
escala.set_scale(8713.4737725); // Utiliza uma escala padrão de verificação
display.println(escala.read()); // Aguada o termino de verificação do peso
display.display();
delay(1000);
display.clearDisplay();
//Seta o cursor para o display
display.setCursor(20,10);
display.print("PesoI: ");
display.display();
delay(1000);
display.clearDisplay();
display.setCursor(30,10);
display.print(escala.get_units(20),2); //Mostra o peso inicial antes de comecar is testes.
display.display();
delay(1000);
display.clearDisplay(); //Limpa o buffer do display
escala.tare(40); // Fixa o peso como tara
display.setCursor(20,0);
display.print("Iniciar testes!");
display.display();
delay(2000);
display.clearDisplay();
forca = escala.get_units(20),2;
}
void loop()
{
delay(100);
atualizaDisplay();
salvaSD(forca);
}
void salvaSD(float x)
{
if (!SD.begin(chipSelect)) {
Serial.println("Erro no cartão");
while (1);
}
Serial.println("Cartão aceito");
myFile = SD.open("TesteCC.txt", FILE_WRITE);
myFile.println(x);
myFile.close();
}
void atualizaDisplay()//Atualiza o display
{
display.clearDisplay();
display.setCursor(0, 10);
display.println(forca);
display.display();
}