Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of BeautifulMemeProject by
led.cpp
00001 /* University of York Robotics Laboratory PsiSwarm Library: LED Functions Source File 00002 * 00003 * File: led.cpp 00004 * 00005 * (C) Dept. Electronics & Computer Science, University of York 00006 * James Hilder, Alan Millard, Homero Elizondo, Jon Timmis 00007 * 00008 * PsiSwarm Library Version: 0.3 00009 * 00010 * October 2015 00011 * 00012 */ 00013 00014 #include "psiswarm.h" 00015 00016 char green_led_states; 00017 char red_led_states; 00018 char center_led_state; 00019 00020 char held_red_states; 00021 char held_green_states; 00022 Timeout blink_led_timeout; 00023 00024 unsigned short get_led_states(){ 00025 return (green_led_states << 8) + red_led_states; 00026 } 00027 00028 void set_leds(char green, char red){ 00029 green_led_states = green; 00030 red_led_states = red; 00031 IF_update_leds(); 00032 } 00033 00034 void set_base_led(char state){ 00035 IF_set_base_LED(state); 00036 } 00037 00038 void set_green_leds(char green){ 00039 green_led_states = green; 00040 IF_update_leds(); 00041 } 00042 00043 void set_red_leds(char red){ 00044 red_led_states = red; 00045 IF_update_leds(); 00046 } 00047 00048 void set_led(char led, char state){ 00049 if(state % 2 == 1) red_led_states |= 1 << led; 00050 else red_led_states &= ~(1 << led); 00051 if(state / 2) green_led_states |= 1 << led; 00052 else green_led_states &= ~(1 << led); 00053 IF_update_leds(); 00054 } 00055 00056 void blink_leds(float timeout){ 00057 save_led_states(); 00058 set_leds(0xFF,0xFF); 00059 blink_led_timeout.attach(&restore_led_states, timeout); 00060 } 00061 00062 void set_center_led(char state){ 00063 set_center_led(state, center_led_brightness); 00064 } 00065 00066 void set_center_led(char state, float brightness){ 00067 center_led_brightness = brightness; 00068 center_led_state = state; 00069 switch(center_led_state){ 00070 case 0: center_led_red.write(0); 00071 center_led_green.write(0); 00072 break; 00073 case 1: center_led_red.write(center_led_brightness / 4); 00074 center_led_green.write(0); 00075 break; 00076 case 2: center_led_red.write(0); 00077 center_led_green.write(center_led_brightness); 00078 break; 00079 case 3: center_led_red.write(center_led_brightness / 4); 00080 center_led_green.write(center_led_brightness); 00081 break; 00082 } 00083 } 00084 00085 void set_center_led_brightness(float brightness){ 00086 set_center_led(center_led_state,brightness); 00087 } 00088 00089 void save_led_states(){ 00090 held_red_states = red_led_states; 00091 held_green_states = green_led_states; 00092 } 00093 00094 void restore_led_states(){ 00095 set_leds(held_green_states,held_red_states); 00096 } 00097 00098 void IF_init_leds(){ 00099 green_led_states = 0; 00100 red_led_states = 0; 00101 center_led_red.period_us(100); 00102 center_led_green.period_us(100); 00103 set_center_led(0,0.2); 00104 } 00105 00106 void IF_update_leds(){ 00107 char led_byte_0 = (((green_led_states & (1 << 3)) == 0) << 7) + 00108 (((green_led_states & (1 << 2)) == 0) << 5) + 00109 (((green_led_states & (1 << 1)) == 0) << 3) + 00110 (((green_led_states & (1)) == 0) << 1) + 00111 (((red_led_states & (1 << 3)) == 0) << 6) + 00112 (((red_led_states & (1 << 2)) == 0) << 4) + 00113 (((red_led_states & (1 << 1)) == 0) << 2) + 00114 (((red_led_states & (1)) == 0)); 00115 char led_byte_1 = (((green_led_states & (1 << 7)) == 0) << 7) + 00116 (((green_led_states & (1 << 6)) == 0) << 5) + 00117 (((green_led_states & (1 << 5)) == 0) << 3) + 00118 (((green_led_states & (1 << 4)) == 0) << 1) + 00119 (((red_led_states & (1 << 7)) == 0) << 6) + 00120 (((red_led_states & (1 << 6)) == 0) << 4) + 00121 (((red_led_states & (1 << 5)) == 0) << 2) + 00122 (((red_led_states & (1 << 4)) == 0)); 00123 IF_write_to_led_ic(led_byte_0,led_byte_1); 00124 }
Generated on Fri Jul 15 2022 08:26:10 by
1.7.2
