bChange

Dependencies:   TextLCD

Committer:
nishimura_taku_pet
Date:
Wed Jul 29 02:32:43 2020 +0000
Revision:
8:0719ca2421b4
Parent:
7:3fc517224e66
commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nishimura_taku_pet 0:18811ba92e94 1 /* mbed Microcontroller Library
nishimura_taku_pet 0:18811ba92e94 2 * Copyright (c) 2019 ARM Limited
nishimura_taku_pet 0:18811ba92e94 3 * SPDX-License-Identifier: Apache-2.0
nishimura_taku_pet 0:18811ba92e94 4 */
nishimura_taku_pet 0:18811ba92e94 5
nishimura_taku_pet 0:18811ba92e94 6 #include "mbed.h"
nishimura_taku_pet 0:18811ba92e94 7 #include "TextLCD.h"
nishimura_taku_pet 4:207de1651f4f 8 #define MIN_V 2.0
nishimura_taku_pet 4:207de1651f4f 9 #define MAX_V 2.67
nishimura_taku_pet 5:a0ebf165abb1 10 //0.107 2.23,3.3
nishimura_taku_pet 4:207de1651f4f 11 I2C i2c_lcd(p28, p27);
nishimura_taku_pet 0:18811ba92e94 12 TextLCD_I2C lcd(&i2c_lcd, (0x27 << 1), TextLCD::LCD16x2, TextLCD::HD44780);
nishimura_taku_pet 0:18811ba92e94 13
nishimura_taku_pet 0:18811ba92e94 14 int b = 0;
nishimura_taku_pet 0:18811ba92e94 15 AnalogIn battery(p15);
nishimura_taku_pet 1:60e68d110d01 16 Serial pc(USBTX, USBRX); // USBシリアルポートのインスタンス
nishimura_taku_pet 4:207de1651f4f 17 int flag_b = 0;
nishimura_taku_pet 4:207de1651f4f 18 int flag_t = 0;
nishimura_taku_pet 2:dbb39def2b89 19 void lcdBacklight(void const *argument);
nishimura_taku_pet 3:7e046dd4942c 20 RtosTimer bTimer(lcdBacklight, osTimerPeriodic);
nishimura_taku_pet 2:dbb39def2b89 21 void lcdBacklight(void const *argument){
nishimura_taku_pet 4:207de1651f4f 22 if(flag_b == 1){
nishimura_taku_pet 2:dbb39def2b89 23 lcd.setBacklight(TextLCD::LightOn);
nishimura_taku_pet 2:dbb39def2b89 24 }else{
nishimura_taku_pet 2:dbb39def2b89 25 lcd.setBacklight(TextLCD::LightOff);
nishimura_taku_pet 2:dbb39def2b89 26 }
nishimura_taku_pet 4:207de1651f4f 27 flag_b = !flag_b;
nishimura_taku_pet 2:dbb39def2b89 28 }
nishimura_taku_pet 7:3fc517224e66 29 void bChange(){
nishimura_taku_pet 2:dbb39def2b89 30 lcd.setBacklight(TextLCD::LightOn);
nishimura_taku_pet 0:18811ba92e94 31 while(true){
nishimura_taku_pet 8:0719ca2421b4 32 //double test = battery.read();
nishimura_taku_pet 8:0719ca2421b4 33 b = (int)(((battery.read() * 3.3 - MIN_V)/0.67)*10+0.5)*10;
nishimura_taku_pet 7:3fc517224e66 34 //b = (int)(((test*3.3 - MIN_V))/(MAX_V) + 0.5)*10;
nishimura_taku_pet 7:3fc517224e66 35 pc.printf("test*3.3=%f,b = %d\r\n",test*3.3,b);
nishimura_taku_pet 4:207de1651f4f 36 if(b < 0){//すべての機能停止
nishimura_taku_pet 7:3fc517224e66 37 /*lcd.setBacklight(TextLCD::LightOff);
nishimura_taku_pet 4:207de1651f4f 38 bTimer.stop();
nishimura_taku_pet 7:3fc517224e66 39 exit(1);*/
nishimura_taku_pet 7:3fc517224e66 40 b = 0;
nishimura_taku_pet 2:dbb39def2b89 41 }else if(b > 100){
nishimura_taku_pet 2:dbb39def2b89 42 b = 100;
nishimura_taku_pet 2:dbb39def2b89 43 }
nishimura_taku_pet 0:18811ba92e94 44 lcd.locate(0,0);
nishimura_taku_pet 0:18811ba92e94 45 lcd.printf("Battery:%3d%%",b);
nishimura_taku_pet 2:dbb39def2b89 46 if(b <= 30){
nishimura_taku_pet 4:207de1651f4f 47 if(flag_t == 0){
nishimura_taku_pet 3:7e046dd4942c 48 bTimer.start(500);
nishimura_taku_pet 4:207de1651f4f 49 flag_t = 1;
nishimura_taku_pet 2:dbb39def2b89 50 }
nishimura_taku_pet 2:dbb39def2b89 51 }else{
nishimura_taku_pet 4:207de1651f4f 52 if(flag_t == 1){
nishimura_taku_pet 3:7e046dd4942c 53 bTimer.stop();
nishimura_taku_pet 2:dbb39def2b89 54 lcd.setBacklight(TextLCD::LightOn);
nishimura_taku_pet 4:207de1651f4f 55 flag_t = 0;
nishimura_taku_pet 2:dbb39def2b89 56 }
nishimura_taku_pet 2:dbb39def2b89 57 }
nishimura_taku_pet 2:dbb39def2b89 58 wait_us(1000000);
nishimura_taku_pet 0:18811ba92e94 59 /*for(double i = MAX_V;i > MIN_V;i -= 0.05){
nishimura_taku_pet 0:18811ba92e94 60 b = (int)((i - MIN_V)/0.107 + 0.5)*10;
nishimura_taku_pet 0:18811ba92e94 61 //printf("i = %.2f,b=%d%\r\n",i,b);
nishimura_taku_pet 0:18811ba92e94 62 lcd.locate(0,0);
nishimura_taku_pet 0:18811ba92e94 63 lcd.printf("Battery:%3d%%",b);
nishimura_taku_pet 0:18811ba92e94 64 if(b <= 30){
nishimura_taku_pet 0:18811ba92e94 65 for(int j = 0;j*(2*b+20) < 200;j++){
nishimura_taku_pet 0:18811ba92e94 66 lcd.setBacklight(TextLCD::LightOff);
nishimura_taku_pet 0:18811ba92e94 67 thread_sleep_for(b+10);
nishimura_taku_pet 0:18811ba92e94 68 lcd.setBacklight(TextLCD::LightOn);
nishimura_taku_pet 0:18811ba92e94 69 thread_sleep_for(b+10);
nishimura_taku_pet 0:18811ba92e94 70 }
nishimura_taku_pet 0:18811ba92e94 71 }else{
nishimura_taku_pet 0:18811ba92e94 72 thread_sleep_for(200);
nishimura_taku_pet 0:18811ba92e94 73 }
nishimura_taku_pet 0:18811ba92e94 74 }*/
nishimura_taku_pet 0:18811ba92e94 75 }
nishimura_taku_pet 0:18811ba92e94 76
nishimura_taku_pet 0:18811ba92e94 77
nishimura_taku_pet 0:18811ba92e94 78 }
nishimura_taku_pet 0:18811ba92e94 79
nishimura_taku_pet 7:3fc517224e66 80 /*void bChange{
nishimura_taku_pet 1:60e68d110d01 81
nishimura_taku_pet 1:60e68d110d01 82 }*/
nishimura_taku_pet 1:60e68d110d01 83
nishimura_taku_pet 0:18811ba92e94 84 int main()
nishimura_taku_pet 0:18811ba92e94 85 {
nishimura_taku_pet 2:dbb39def2b89 86 //Thread thread(change,NULL,osPriorityNormal);
nishimura_taku_pet 2:dbb39def2b89 87 Thread thread;
nishimura_taku_pet 7:3fc517224e66 88 thread.start(bChange);
nishimura_taku_pet 0:18811ba92e94 89 while (true) {
nishimura_taku_pet 0:18811ba92e94 90 wait(1);
nishimura_taku_pet 0:18811ba92e94 91 }
nishimura_taku_pet 0:18811ba92e94 92 }