def deal_with_command(s): if s[0] != ID: return 0 if s[1] != ord(b'S') and s[1] != ord(b'R') and s[1] != ord(b'Q'): return 0 if s[1] == ord(b'S'): for i in range(4, 8, 1): speed[i - 4] = s[i] set_car_speed() st = struct.pack('4s4B6i', s[0:4], speed[0], speed[1], speed[2], speed[3], compass.get_x(), compass.get_y(), compass.get_z(), accelerometer.get_x(), accelerometer.get_y(), accelerometer.get_z()) uart.write(st) sleep(20) if s[1] == ord(b'R'): display.show(Image.SAD) uart.write('+++') for i in range(4, 8, 1): speed[i - 4] = 0 set_car_speed() sleep(1000) reset() return 1
def sleep(): power_data = [0x8D, 0x3E, 0x11, 0x01, 0x13, 0x01, 0x00] power_data.extend([~((sum(power_data) - 0x8D) % 256) & 0x00FF, 0xD8]) uart.write(bytearray(power_data)) return
def reset_yaw(): drive_data = [0x8D, 0x3E, 0x12, 0x01, 0x16, 0x06, 0x00] drive_data.extend([~((sum(drive_data) - 0x8D) % 256) & 0x00FF, 0xD8]) uart.write(bytearray(drive_data)) return
def send_telegram(self, BotApiKey, MyChannelName, message): #publish a message to Bot on telegram uart.write("\r") self.__readUntil(uart, '\r') uart.write("|3|1|https://api.telegram.org/bot", BotApiKey, "/sendMessage?chat_id=",MyChannelName,"&text=" message, "\r") self.__readUntil(uart, '3') result = self.__readUntil(uart, '\r') return True
def publish(self, topicName, message): #publish a message to Broker on topic uart.write("\r") __readUntil(uart, '\r') uart.write("|4|1|3|", topicName, "|", message, "|\r") self.__readUntil(uart, '4') self.__readUntil(uart, '1') self.__readUntil(uart, '3') self.__readUntil(uart, '1') return True
def subscribe(self, topicName): #subscribe on topic uart.write("\r") self.__readUntil(uart, '\r') uart.write("|4|1|2|", topicName, "|\r") self.__readUntil(uart, '4') self.__readUntil(uart, '1') self.__readUntil(uart, '2') self.__readUntil(uart, '1') return True
def set_rgb_led_by_index(index, red, green, blue): led_data = [0x8D, 0x3E, 0x11, 0x01, 0x1A, 0x1A, 0x00] led_data.extend(index) led_data.extend([red, green, blue]) led_data.extend([~((sum(led_data) - 0x8D) % 256) & 0x00FF, 0xD8]) uart.write(bytearray(led_data)) return
def send_AT(mSend, mRec1, mRec2=b""): while True: uart.write(mSend) sleep(100) if uart.any(): s = uart.readall() if s == mRec1 or s == mRec2: break display.show(Image.HAPPY) sleep(200)
def connect_wifi(self, yourSSID,yourPASSWORD): #connect to WIFI uart.init(baudrate=9600, tx = pin0, rx = pin1) uart.write("\r") self.__readUntil(uart, '\r') uart.write("|2|1|", yourSSID, ",", yourPASSWORD, "|\r") self.__readUntil(uart, '3') ipadress = self.__readUntil(uart, '\r') uart.init(baudrate=115200) print(ipadress) return True
def hdr_bb( cnt, limit) : if limit == cnt : cnt = 0 else : cnt = cnt + 1 uart.write( str( cnt)) dp.scroll( str( cnt), delay = 80) return cnt
def set_all_leds(red, green, blue): led_data = [ 0x8D, 0x3E, 0x11, 0x01, 0x1A, 0x1A, 0x00, 0x3F, 0xFF, 0xFF, 0xFF ] for _ in range(10): led_data.extend([red, green, blue]) led_data.extend([~((sum(led_data) - 0x8D) % 256) & 0x00FF, 0xD8]) uart.write(bytearray(led_data)) return
def connect_iot_cloud(self, server,port,user,password): #connect to MQTT Broker server '''Thingspeak; server="api.thingspeak.com";port="80" Blynk; server="blynk-cloud.com" ;http port="8080"; https port="9443" exemple: ''' uart.write("\r") self.__readUntil(uart, '\r') uart.write("|4|1|1|", server,"|", port, "|", user, "|", password, "|\r") self.__readUntil(uart, '4') self.__readUntil(uart, '1') self.__readUntil(uart, '1') self.__readUntil(uart, '1') return True
def loop() : # words = uart.readline() word = uart.read() if word is None : return # uart.write( str( len( word))) # uart.write( str( type( word))) # uart.write( str( int.from_bytes( word, 'big'))) uart.write( word) if int.from_bytes( word, 'big') == 0x0D : uart.write( '\n')
def temperature(self): try: uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=self.tx_pin, rx=self.rx_pin) sleep(1) uart.write(b'\x50') t = 0 buf = bytearray(1) while not uart.any() and t < 1000: t = t + 1 sleep(5) if t < 1000: uart.readinto(buf, 1) uart.init(115200) return(buf[0] - 45) except Exception as exc: uart.init(115200) print_exception(exc)
def set_raw_motors(left_mode, left_speed, right_mode, right_speed): if left_mode < 0 or left_mode > 2: left_mode = 0 if right_mode < 0 or right_mode > 2: right_mode = 0 raw_motor_data = [ 0x8D, 0x3E, 0x12, 0x01, 0x16, 0x01, 0x00, left_mode, left_speed, right_mode, right_speed ] raw_motor_data.extend( [~((sum(raw_motor_data) - 0x8D) % 256) & 0x00FF, 0xD8]) uart.write(bytearray(raw_motor_data)) return
def drive(speed, heading): flags = 0x00 if speed < 0: speed *= -1 heading += 180 heading %= 360 flags = 0x01 drive_data = [ 0x8D, 0x3E, 0x12, 0x01, 0x16, 0x07, 0x00, speed, heading >> 8, heading & 0xFF, flags ] drive_data.extend([~((sum(drive_data) - 0x8D) % 256) & 0x00FF, 0xD8]) uart.write(bytearray(drive_data)) return
def distance_mm(self): try: uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=self.tx_pin, rx=self.rx_pin) sleep(1) uart.write(b'\x55') t = 0 buf = bytearray(2) while not uart.any() and t < 1000: t = t + 1 sleep(5) if t < 1000: uart.readinto(buf, 2) uart.init(115200) dist = buf[0] * 256 + buf[1] if dist > 1100: dist = -1 return dist except Exception as exc: uart.init(115200) print_exception(exc)
def main(): data_received = 0 display.show(Image.HAPPY) while True: response = radio.receive() if response is not None: # Some data received uart.write(response+"\n") # Write received data with line break on serial bus if data_received == 0: display.clear() # Clear Microbit LEDs if "," in response: # "(x,y,z)" data received cy, cx = divmod(data_received, 5) display.set_pixel(cx, cy, 9) # Increase and limit data_received value within 0-24 range data_received = 0 if data_received >= 24 else data_received+1 elif response == "done": data_received = 0 display.show(Image.YES) elif response == "exit": display.show(Image.HAPPY) sleep(2000) display.clear() break else: sleep(100)
# Shove accelerometer data through the uart. from microbit import accelerometer, sleep, uart, pin0, pin1 uart.init(rx=pin0, tx=pin1) while True: uart.write( bytes(','.join([str(v) for v in accelerometer.get_values()]), 'ascii') + '\n') sleep(20000)
def move_relative(self, x_pixels=1, y_pixels=1): uart.write("|@s-m-mr@|{} {}|@e@|\n".format(x_pixels, y_pixels))
def _send_byte(self, byte): uart.write(byte)
Power = str(msg_uart[7:-1], 'UTF-8') DF_NO = 0 STATE = "Send_Msg" elif STATE == "Process_Received_Data_Frame": msg_decoded = Decoded_Data(msg_receive) if msg_decoded[0:2] == "N1": if msg_decoded[3:] == "#": RDF_NO = 1 N1_Msg = "#" + msg_decoded[0:2] + ":" elif (msg_decoded[3:] == "$") and (int(msg_decoded[2]) == RDF_NO): N1_Msg += "$" uart.write(N1_Msg) RDF_NO += 1 elif int(msg_decoded[2]) == RDF_NO: N1_Msg += msg_decoded[3:] RDF_NO += 1 STATE = "Send_Ack" elif msg_decoded[0:2] == "N2": if msg_decoded[3:] == "#": RDF_NO = 1 N1_Msg = "#" + msg_decoded[0:2] + ":" elif (msg_decoded[3:] == "$") and (int(msg_decoded[2]) == RDF_NO): N1_Msg += "$"
def press(self, key): uart.write("|@s-k-prs@|{}|@e@|\n".format(key))
YELLOW = b'Y' GREEN = b'G' TRIGGER = b'T' CLEAR = b'C' UNKNOWN = b'U' dim_value = 9 # value 1-9 for dimming the display NEUTRAL = Image('00000:09090:00000:99999:00000:') display.show(Image.GHOST / 9 * dim_value) while True: if uart.any(): data = uart.read() if RED in data: display.show(Image.SAD / 9 * dim_value) elif YELLOW in data: display.show(NEUTRAL / 9 * dim_value) elif GREEN in data: display.show(Image.HAPPY / 9 * dim_value) elif CLEAR in data: display.clear() elif UNKNOWN in data: display.show(Image("?") / 9 * dim_value) if button_b.is_pressed(): uart.write(TRIGGER) display.show([clk / 9 * dim_value for clk in Image.ALL_CLOCKS], delay=100) display.show(Image.CLOCK12 / 9 * dim_value)
def scroll(self, steps=1): uart.write("|@s-m-scr@|{}|@e@|\n".format(steps))
def write(self, text): uart.write("|@s-k-txt@|{}|@e@|\n".format(text))
def left_click(self): uart.write("|@s-m-ckl@||@e@|\n")
def right_click(self): uart.write("|@s-m-ckr@||@e@|\n")
def init() : uart.init( baudrate = 115200) uart.write( "Hello World !\r\n")
def move_horizontal(self, pixels=1): uart.write("|@s-m-mh@|{}|@e@|\n".format(pixels))
def move_vertical(self, pixels=1): uart.write("|@s-m-mv@|{}|@e@|\n".format(pixels))
def move_right(self, pixels=1): uart.write("|@s-m-mr@|{}|@e@|\n".format(pixels))
def move_left(self, pixels=1): uart.write("|@s-m-ml@|{}|@e@|\n".format(pixels))