bChange

Dependencies:   TextLCD

Committer:
nishimura_taku_pet
Date:
Tue Jul 28 03:11:02 2020 +0000
Revision:
3:7e046dd4942c
Parent:
2:dbb39def2b89
Child:
4:207de1651f4f
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 0:18811ba92e94 8 #define MIN_V 2.23
nishimura_taku_pet 0:18811ba92e94 9 #define MAX_V 3.3
nishimura_taku_pet 0:18811ba92e94 10 //0.107
nishimura_taku_pet 0:18811ba92e94 11 I2C i2c_lcd(p9, p10);
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 2:dbb39def2b89 17 int isBacklight = 0;
nishimura_taku_pet 2:dbb39def2b89 18 int isTimer = 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 2:dbb39def2b89 22 if(isBacklight){
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 2:dbb39def2b89 27 isBacklight = !isBacklight;
nishimura_taku_pet 2:dbb39def2b89 28 }
nishimura_taku_pet 2:dbb39def2b89 29 void change(){
nishimura_taku_pet 2:dbb39def2b89 30 lcd.setBacklight(TextLCD::LightOn);
nishimura_taku_pet 0:18811ba92e94 31 while(true){
nishimura_taku_pet 2:dbb39def2b89 32 b = (int)((battery.read()* MAX_V - MIN_V)/0.107 + 0.5)*10;
nishimura_taku_pet 2:dbb39def2b89 33 if(b < 0){
nishimura_taku_pet 2:dbb39def2b89 34 b = 0;
nishimura_taku_pet 2:dbb39def2b89 35 }else if(b > 100){
nishimura_taku_pet 2:dbb39def2b89 36 b = 100;
nishimura_taku_pet 2:dbb39def2b89 37 }
nishimura_taku_pet 0:18811ba92e94 38 lcd.locate(0,0);
nishimura_taku_pet 0:18811ba92e94 39 lcd.printf("Battery:%3d%%",b);
nishimura_taku_pet 2:dbb39def2b89 40 if(b <= 30){
nishimura_taku_pet 2:dbb39def2b89 41 if(isTimer == 0){
nishimura_taku_pet 2:dbb39def2b89 42 isTimer = 1;
nishimura_taku_pet 3:7e046dd4942c 43 bTimer.start(500);
nishimura_taku_pet 2:dbb39def2b89 44 }
nishimura_taku_pet 2:dbb39def2b89 45 }else{
nishimura_taku_pet 2:dbb39def2b89 46 if(isTimer == 1){
nishimura_taku_pet 3:7e046dd4942c 47 bTimer.stop();
nishimura_taku_pet 2:dbb39def2b89 48 lcd.setBacklight(TextLCD::LightOn);
nishimura_taku_pet 2:dbb39def2b89 49 isTimer = 0;
nishimura_taku_pet 2:dbb39def2b89 50 }
nishimura_taku_pet 2:dbb39def2b89 51 }
nishimura_taku_pet 2:dbb39def2b89 52 wait_us(1000000);
nishimura_taku_pet 0:18811ba92e94 53 /*for(double i = MAX_V;i > MIN_V;i -= 0.05){
nishimura_taku_pet 0:18811ba92e94 54 b = (int)((i - MIN_V)/0.107 + 0.5)*10;
nishimura_taku_pet 0:18811ba92e94 55 //printf("i = %.2f,b=%d%\r\n",i,b);
nishimura_taku_pet 0:18811ba92e94 56 lcd.locate(0,0);
nishimura_taku_pet 0:18811ba92e94 57 lcd.printf("Battery:%3d%%",b);
nishimura_taku_pet 0:18811ba92e94 58 if(b <= 30){
nishimura_taku_pet 0:18811ba92e94 59 for(int j = 0;j*(2*b+20) < 200;j++){
nishimura_taku_pet 0:18811ba92e94 60 lcd.setBacklight(TextLCD::LightOff);
nishimura_taku_pet 0:18811ba92e94 61 thread_sleep_for(b+10);
nishimura_taku_pet 0:18811ba92e94 62 lcd.setBacklight(TextLCD::LightOn);
nishimura_taku_pet 0:18811ba92e94 63 thread_sleep_for(b+10);
nishimura_taku_pet 0:18811ba92e94 64 }
nishimura_taku_pet 0:18811ba92e94 65 }else{
nishimura_taku_pet 0:18811ba92e94 66 thread_sleep_for(200);
nishimura_taku_pet 0:18811ba92e94 67 }
nishimura_taku_pet 0:18811ba92e94 68 }*/
nishimura_taku_pet 0:18811ba92e94 69 }
nishimura_taku_pet 0:18811ba92e94 70
nishimura_taku_pet 0:18811ba92e94 71
nishimura_taku_pet 0:18811ba92e94 72 }
nishimura_taku_pet 0:18811ba92e94 73
nishimura_taku_pet 1:60e68d110d01 74 /*void change(){
nishimura_taku_pet 1:60e68d110d01 75
nishimura_taku_pet 1:60e68d110d01 76 }*/
nishimura_taku_pet 1:60e68d110d01 77
nishimura_taku_pet 0:18811ba92e94 78 int main()
nishimura_taku_pet 0:18811ba92e94 79 {
nishimura_taku_pet 2:dbb39def2b89 80 //Thread thread(change,NULL,osPriorityNormal);
nishimura_taku_pet 2:dbb39def2b89 81 Thread thread;
nishimura_taku_pet 2:dbb39def2b89 82 thread.start(change);
nishimura_taku_pet 0:18811ba92e94 83
nishimura_taku_pet 0:18811ba92e94 84 while (true) {
nishimura_taku_pet 0:18811ba92e94 85 wait(1);
nishimura_taku_pet 0:18811ba92e94 86 }
nishimura_taku_pet 0:18811ba92e94 87 }