Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP32Encoder.h>
- #include "BluetoothSerial.h"
- #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
- #error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
- #endif
- BluetoothSerial SerialBT;
- ESP32Encoder encoder;
- // set the 7segment type (common Cathode or Anode)
- const bool commonCathode = true; // I'm using common Cathode 7segment if you use common Anode then change the value into false.
- // alpha-digit pattern for a 7-segment display
- const byte digit_pattern[17] =
- {
- // 74HC595 Outpin Connection with 7segment display.
- // Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
- // a b c d e f g DP
- 0b11111100, // 0
- 0b01100000, // 1
- 0b11011010, // 2
- 0b11110010, // 3
- 0b01100110, // 4
- 0b10110110, // 5
- 0b10111110, // 6
- 0b11100000, // 7
- 0b11111110, // 8
- 0b11110110, // 9
- 0b11101110, // A
- 0b00111110, // b
- 0b00011010, // C
- 0b01111010, // d
- 0b10011110, // E
- 0b10001110, // F
- 0b00000001 // .
- };
- //Pin connected to ST_CP of 74HC595
- int latchPin = 27;
- //Pin connected to SH_CP of 74HC595
- int clkPin = 13;
- //Pin connected to DS of 74HC595
- int dtPin = 14;
- // display value
- int dispVal = 1234;
- bool increment = true;
- char view[8];
- float test = 10.6;
- // timer and flag for example, not needed for encoders
- int dispDigit1 = 0;
- int dispDigit2 = 0;
- int dispDigit3 = 0;
- int dispDigit4 = 0;
- void setup() {
- Serial.begin(115200);
- SerialBT.begin("FlottSB20"); //Bluetooth device name
- // Enable the weak pull down resistors
- pinMode(latchPin, OUTPUT); //ST_CP of 74HC595
- pinMode(clkPin, OUTPUT); //SH_CP of 74HC595
- pinMode(dtPin, OUTPUT); //DS of 74HC595
- //ESP32Encoder::useInternalWeakPullResistors=DOWN;
- // Enable the weak pull up resistors
- ESP32Encoder::useInternalWeakPullResistors = UP;
- // use pin 19 and 18 for the first encoder
- encoder.attachHalfQuad(5, 23);
- // use pin 17 and 16 for the second encoder
- // set starting count value after attaching
- encoder.setCount(5000);
- // clear the encoder's raw count and set the tracked count to zero
- encoder.clearCount();
- Serial.println("Encoder Start = " + String((int32_t)encoder.getCount()));
- // set the lastToggle
- }
- void loop() {
- sprintf_P(view, "%+06.1f", mapfloat((int32_t)encoder.getCount(), 0, 5000.0, 0, 236.0));
- Serial.println( String((int32_t)encoder.getCount()));
- String temp = view;
- SerialBT.println(temp);
- temp.replace(".", "");
- Serial.println(temp);
- digitalWrite(latchPin, LOW);
- shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[(int)temp.charAt(4) - '0']);
- shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[(int)temp.charAt(3) - '0'] | digit_pattern[16]);
- shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[(int)temp.charAt(2) - '0']);
- shiftOut(dtPin, clkPin, LSBFIRST, digit_pattern[(int)temp.charAt(1) - '0'] );
- digitalWrite(latchPin, HIGH);
- delay(1000);
- }
- float mapfloat(float x, float in_min, float in_max, float out_min, float out_max) {
- return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
- }
Advertisement
Add Comment
Please, Sign In to add comment