bChange

Dependencies:   TextLCD

main.cpp

Committer:
nishimura_taku_pet
Date:
2020-07-28
Revision:
2:dbb39def2b89
Parent:
1:60e68d110d01
Child:
3:7e046dd4942c

File content as of revision 2:dbb39def2b89:

/* mbed Microcontroller Library
 * Copyright (c) 2019 ARM Limited
 * SPDX-License-Identifier: Apache-2.0
 */

#include "mbed.h"
#include "TextLCD.h"
#define MIN_V 2.23
#define MAX_V 3.3
//0.107
I2C i2c_lcd(p9, p10);
TextLCD_I2C lcd(&i2c_lcd, (0x27 << 1), TextLCD::LCD16x2, TextLCD::HD44780);

int b = 0;
AnalogIn battery(p15);
Serial pc(USBTX, USBRX); // USBシリアルポートのインスタンス
int isBacklight = 0;
int isTimer = 0;
void lcdBacklight(void const *argument);
RtosTimer sensor_timer(lcdBacklight, osTimerPeriodic);
void lcdBacklight(void const *argument){
    if(isBacklight){
        lcd.setBacklight(TextLCD::LightOn);
    }else{
        lcd.setBacklight(TextLCD::LightOff);
    }
    isBacklight = !isBacklight;
}
void change(){
        lcd.setBacklight(TextLCD::LightOn);
        while(true){
            b = (int)((battery.read()* MAX_V - MIN_V)/0.107 + 0.5)*10;
            if(b < 0){
                b = 0;
            }else if(b > 100){
                b = 100;
            }
            lcd.locate(0,0);
            lcd.printf("Battery:%3d%%",b);
            if(b <= 30){
                if(isTimer == 0){
                    isTimer = 1;
                    sensor_timer.start(500);
                }
            }else{
                if(isTimer == 1){
                    sensor_timer.stop();
                    lcd.setBacklight(TextLCD::LightOn);
                    isTimer = 0;
                }
            }
            wait_us(1000000);
            /*for(double i = MAX_V;i > MIN_V;i -= 0.05){
                b = (int)((i - MIN_V)/0.107 + 0.5)*10;
                //printf("i = %.2f,b=%d%\r\n",i,b);
                lcd.locate(0,0);
                lcd.printf("Battery:%3d%%",b);
                if(b <= 30){
                    for(int j = 0;j*(2*b+20) < 200;j++){
                        lcd.setBacklight(TextLCD::LightOff);
                        thread_sleep_for(b+10);
                        lcd.setBacklight(TextLCD::LightOn);
                        thread_sleep_for(b+10);
                    }
                }else{
                    thread_sleep_for(200);
                }
            }*/
        }
        

}

/*void change(){
    
}*/

int main()
{
    //Thread thread(change,NULL,osPriorityNormal);
    Thread thread;
    thread.start(change);

    while (true) {
        wait(1);
    }
}