O projeto utiliza o sensor ultrassônico HC-SR04 e um display OLED SSD1306 I2C 128x64 Monocromático.
Para trabalhar com o sensor, utilizei a biblioteca Ultrasonic. E para controlar o display OLED, a biblioteca U8glib.
Um projeto bastante interessante e simples utilizando o Arduino.
Segue o esquema elétrico e o código fonte:
/*--------------------------------------------------------- Programa : TRENA DIGITAL Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 09/01/2018 ---------------------------------------------------------*/ #include <Ultrasonic.h> //Biblioteca do sensor HC-SR04 #include <U8glib.h> //Biblioteca do display OLED SSD1306 I2C 128x64 #define TRIG 12 //Trigger do sensor #define ECHO 13 //Echo do sensor /*----- VARIÁVEIS -----*/ Ultrasonic ultrasonic(TRIG, ECHO); //Variável do sensor HC-SR04 nos pinos 12 e 13 U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); //Variável do display. SCK = A5 / SDA = A4 int dist = 0; //Variável com o valor recebido do sensor /*----- SETUP -----*/ void setup() { //Configura os pinos pinMode(TRIG, OUTPUT); //Envia o sinal ultrassônico pinMode(ECHO, INPUT); //Recebe o sinal ultrassônico //Configura o display para somente uma cor u8g.setColorIndex(1); } /*----- LOOP PRINCIPAL -----*/ void loop() { dist = ultrasonic.distanceRead(); Screen(dist); delay(500); } /*----- TELA DISPLAY -----*/ void Screen(int dist) { u8g.firstPage(); //Converte a variável dist de int para char char d[3]; itoa(dist, d, 10); //Variável para ajustar o posicionamento do valor na tela int p = 57; if (dist >= 10 && dist < 100) { p = 47; } else if (dist >= 100) { p = 38; } //Loop para montar a tela do { //Primeira linha com título u8g.setFont(u8g_font_6x10); u8g.drawStr(30, 12, "TRENA DIGITAL"); //Frame u8g.drawRFrame(0, 15, 128, 35, 3); //Exibe a distância u8g.setFont(u8g_font_fub25); u8g.drawStr(p, 46, d); //Texto com a unidade de medida u8g.setFont(u8g_font_5x7); u8g.drawStr(114, 46, "CM"); //Texto rodapé u8g.setFont(u8g_font_orgv01); u8g.drawStr(29, 63, "EfeitoNerd.com.br"); } while (u8g.nextPage()); }
Nenhum comentário:
Postar um comentário