bChange

Dependencies:   TextLCD

main.cpp

Committer:
nishimura_taku_pet
Date:
2020-07-29
Revision:
8:0719ca2421b4
Parent:
7:3fc517224e66

File content as of revision 8:0719ca2421b4:

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

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

int b = 0;
AnalogIn battery(p15);
Serial pc(USBTX, USBRX); // USBシリアルポートのインスタンス
int flag_b = 0;
int flag_t = 0;
void lcdBacklight(void const *argument);
RtosTimer bTimer(lcdBacklight, osTimerPeriodic);
void lcdBacklight(void const *argument){
    if(flag_b == 1){
        lcd.setBacklight(TextLCD::LightOn);
    }else{
        lcd.setBacklight(TextLCD::LightOff);
    }
    flag_b = !flag_b;
}
void bChange(){
        lcd.setBacklight(TextLCD::LightOn);
        while(true){
            //double test = battery.read();
            b = (int)(((battery.read() * 3.3 - MIN_V)/0.67)*10+0.5)*10;
            //b = (int)(((test*3.3 - MIN_V))/(MAX_V) + 0.5)*10;
            pc.printf("test*3.3=%f,b = %d\r\n",test*3.3,b);
            if(b < 0){//すべての機能停止
                /*lcd.setBacklight(TextLCD::LightOff);
                bTimer.stop();
                exit(1);*/
                b = 0;
            }else if(b > 100){
                b = 100;
            }
            lcd.locate(0,0);
            lcd.printf("Battery:%3d%%",b);
            if(b <= 30){
                if(flag_t == 0){
                    bTimer.start(500);
                    flag_t = 1;
                }
            }else{
                if(flag_t == 1){
                    bTimer.stop();
                    lcd.setBacklight(TextLCD::LightOn);
                    flag_t = 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 bChange{
    
}*/

int main()
{
    //Thread thread(change,NULL,osPriorityNormal);
    Thread thread;
    thread.start(bChange);
    while (true) {
        wait(1);
    }
}