fork of seeed studio 4-digit display for st nucleo board

Dependencies:   Data_Clock_Pair Seeed_Chainable_LED Seeed_Four_Digit_Disp Seeed_IR_Temp_Sensor Seeed_Led_Bar

Fork of Seeed_Grove_4_Digit_Display_Clock by Seeed

main.cpp

Committer:
tulanthoar
Date:
2017-06-22
Revision:
20:2e72ddd68cda
Parent:
17:71c14845db51

File content as of revision 20:2e72ddd68cda:

#include <algorithm>
#include <cmath>
#include "mbed.h"
#include "rtos.h"
#include "SeeedLedBar.h"
#include "SeeedFourDigitDisp.h"
#include "SeeedQTouch.h"
#include "SeeedChainableLED.h"
#include "SeeedIRTempSensor.h"

namespace  {

Serial pc(SERIAL_TX, SERIAL_RX);
AnalogIn knob(PA_3);

void blink_led() {
    for(DigitalOut led(PF_12);; Thread::wait(1000) ) {
        led = !led;
    }
}
} // namespace

int main() {
    pc.printf("\n\nstarting algorithm\n\n");
    Thread heartbeat;
    heartbeat.start(callback(blink_led));
    DataClockPair chainablePins, rgbPins, qTouchPins, dispPins, ledBarPins, surrDispPins;
    surrDispPins.dataPin = PG_0;
    surrDispPins.clockPin = PG_1;
    ledBarPins.dataPin = PE_9;
    ledBarPins.clockPin = PF_13;
    dispPins.dataPin = PE_13;
    dispPins.clockPin = PF_15;
    qTouchPins.dataPin = PB_9;
    qTouchPins.clockPin = PB_8;
    rgbPins.dataPin = PG_14;
    rgbPins.clockPin = PG_9;
    chainablePins.clockPin = PF_14;
    chainablePins.dataPin = PE_11;
    SeeedLedBar ledBar(ledBarPins);
    SeeedFourDigitDisp disp(dispPins);
    SeeedFourDigitDisp surrDisp(surrDispPins);
    SeeedQTouch qTouch(qTouchPins);
    SeeedChainableLED led_chain(chainablePins);
    SeeedChainableLED rgb_led(rgbPins);

    disp.set_digit(0,0);
    int knob_led_bar[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
    ledBar.ten_on();
    disp.clear_display();
    led_chain.turn_on();
    led_chain.set_color_rgb(100,50,0);
    rgb_led.set_color_rgb(50,200,10);
    for (;; Thread::wait(1000) ) {
        qTouch.key_touch(&pc);
        surrDisp.set_integer(floor(IRTempSensor::measureObjectTemp(PA_3, PC_0)));
        auto led_frac = knob.read();
        int led_percent = floor(led_frac * 100);
        int tens = floor(led_frac * 10);
        int ones = led_percent % 10;
        ones = floor(ones * 10 / 8);
        if (ones > 8) ones = 8;
        for (int i = 0; i < tens; ++i) knob_led_bar[i] = 0xff;
        knob_led_bar[tens] = ones * 0xf;
        for (int i = ++tens; i < 10; ++i) knob_led_bar[i] = 0x00;
        ledBar.ten_set(knob_led_bar);
        disp.set_integer(floor(IRTempSensor::measuresureTemp(PA_3)));
        /* disp.set_integer(led_percent); */
        int eightBitInput = led_frac * 255;
        led_chain.set_color_rgb(eightBitInput, eightBitInput, eightBitInput);
        rgb_led.set_color_rgb(50,eightBitInput,10);
    }
    return 1;
}