class DfrobotBoard(Board): """ Board class for drobot hardware. """ def __init__(self): super(DfrobotBoard, self).__init__() # pin mappings self.pin_mappings = PinMappings(temp_pin=3, flame_pin=2, speaker_pin=15, reference_voltage=1.0) if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata: addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0") self.pin_mappings += 512 self.pin_mappings.reference_voltage = 0.33 self.temp = Aio(self.pin_mappings.temp_pin) self.flame = Aio(self.pin_mappings.flame_pin) self.speaker = Gpio(self.pin_mappings.speaker_pin) self.speaker.dir(DIR_OUT) def update_hardware_state(self): """ Update hardware state. """ obj_temp = self.read_obj_temp() self.trigger_hardware_event(TEMP_READING, obj_temp) flame_detected = self.detect_flame() self.trigger_hardware_event(FLAME_DETECTED, flame_detected) # hardware functions def read_obj_temp(self): return ((500 * self.temp.read()) / 1024) * self.pin_mappings.reference_voltage def detect_flame(self): return (self.flame.read() * self.pin_mappings.reference_voltage >= 300) def play_beep(self): self.speaker.write(1) SCHEDULER.add_job(lambda: self.speaker.write(0), "date", run_date=datetime.utcnow() + timedelta(seconds=1)) def play_temp(self): self.play_beep() def play_flame(self): self.play_beep()
def __init__(self): super(DfrobotBoard, self).__init__() # pin mappings self.pin_mappings = PinMappings(temp_pin=3, flame_pin=2, speaker_pin=15, reference_voltage=1.0) if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata: addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0") self.pin_mappings += 512 self.pin_mappings.reference_voltage = 0.33 self.temp = Aio(self.pin_mappings.temp_pin) self.flame = Aio(self.pin_mappings.flame_pin) self.speaker = Gpio(self.pin_mappings.speaker_pin) self.speaker.dir(DIR_OUT)
def __init__(self): super(DfrobotBoard, self).__init__() # pin mappings self.pin_mappings = PinMappings(accel_x_pin=3, accel_y_pin=2, accel_z_pin=1, screen_register_select_pin=8, screen_enable_pin=9, screen_data_0_pin=4, screen_data_1_pin=5, screen_data_2_pin=6, screen_data_3_pin=7, screen_analog_input_pin=0) if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata: addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0") self.pin_mappings += 512 self.screen = SAINSMARTKS(self.pin_mappings.screen_register_select_pin, self.pin_mappings.screen_enable_pin, self.pin_mappings.screen_data_0_pin, self.pin_mappings.screen_data_1_pin, self.pin_mappings.screen_data_2_pin, self.pin_mappings.screen_data_3_pin, self.pin_mappings.screen_analog_input_pin) # accelerometer setup self.ax = Aio(self.pin_mappings.accel_x_pin) self.ay = Aio(self.pin_mappings.accel_y_pin) self.az = Aio(self.pin_mappings.accel_z_pin) self.acceleration_detected = False
def __init__(self): super(DfrobotBoard, self).__init__() # pin mappings self.pin_mappings = PinMappings( accel_x_pin=3, accel_y_pin=2, accel_z_pin=1, screen_register_select_pin=8, screen_enable_pin=9, screen_data_0_pin=4, screen_data_1_pin=5, screen_data_2_pin=6, screen_data_3_pin=7, screen_analog_input_pin=0 ) if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata: addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0") self.pin_mappings += 512 self.screen = SAINSMARTKS( self.pin_mappings.screen_register_select_pin, self.pin_mappings.screen_enable_pin, self.pin_mappings.screen_data_0_pin, self.pin_mappings.screen_data_1_pin, self.pin_mappings.screen_data_2_pin, self.pin_mappings.screen_data_3_pin, self.pin_mappings.screen_analog_input_pin ) # accelerometer setup self.ax = Aio(self.pin_mappings.accel_x_pin) self.ay = Aio(self.pin_mappings.accel_y_pin) self.az = Aio(self.pin_mappings.accel_z_pin) self.acceleration_detected = False
""" Some sample mappings: x, y = vr_x.read(), vr_y.read() if y == 0 and 500 < x < 600: rover.send(Move.FORWARD) elif y > 1000 and 500 < x < 600: rover.send(Move.BACKWARD) elif x == 0 and 500 < y < 600: rover.send(Move.LEFT) elif x > 1000 and 300 < y < 600: rover.send(Move.RIGHT) else: pass """ from mraa import Aio X_PIN = 0 Y_PIN = 1 vr_x = Aio(X_PIN) vr_y = Aio(Y_PIN)
class DfrobotBoard(Board): """ Board class for drobot hardware. """ def __init__(self): super(DfrobotBoard, self).__init__() # pin mappings self.pin_mappings = PinMappings(accel_x_pin=3, accel_y_pin=2, accel_z_pin=1, screen_register_select_pin=8, screen_enable_pin=9, screen_data_0_pin=4, screen_data_1_pin=5, screen_data_2_pin=6, screen_data_3_pin=7, screen_analog_input_pin=0) if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata: addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0") self.pin_mappings += 512 self.screen = SAINSMARTKS(self.pin_mappings.screen_register_select_pin, self.pin_mappings.screen_enable_pin, self.pin_mappings.screen_data_0_pin, self.pin_mappings.screen_data_1_pin, self.pin_mappings.screen_data_2_pin, self.pin_mappings.screen_data_3_pin, self.pin_mappings.screen_analog_input_pin) # accelerometer setup self.ax = Aio(self.pin_mappings.accel_x_pin) self.ay = Aio(self.pin_mappings.accel_y_pin) self.az = Aio(self.pin_mappings.accel_z_pin) self.acceleration_detected = False def update_hardware_state(self): """ Update hardware state. """ current_acceleration = self.detect_acceleration() if current_acceleration != self.acceleration_detected: if current_acceleration: self.trigger_hardware_event(ACCELERATION_DETECTED) self.acceleration_detected = current_acceleration # hardware functions def detect_acceleration(self): """ Detect acceleration change. """ ax = self.ax.read() ay = self.ay.read() az = self.az.read() if ax > 412 or ay > 412 or az > 412: return True else: return False def write_message(self, message, line=0): """ Write message to LCD screen. """ message = message.ljust(16) self.screen.setCursor(line, 0) self.screen.write(message) print(message) def change_background(self, color): """ Change LCD screen background color. No effect on the dfrobot. """ pass
class DfrobotBoard(Board): """ Board class for drobot hardware. """ def __init__(self): super(DfrobotBoard, self).__init__() # pin mappings self.pin_mappings = PinMappings( accel_x_pin=3, accel_y_pin=2, accel_z_pin=1, screen_register_select_pin=8, screen_enable_pin=9, screen_data_0_pin=4, screen_data_1_pin=5, screen_data_2_pin=6, screen_data_3_pin=7, screen_analog_input_pin=0 ) if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata: addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0") self.pin_mappings += 512 self.screen = SAINSMARTKS( self.pin_mappings.screen_register_select_pin, self.pin_mappings.screen_enable_pin, self.pin_mappings.screen_data_0_pin, self.pin_mappings.screen_data_1_pin, self.pin_mappings.screen_data_2_pin, self.pin_mappings.screen_data_3_pin, self.pin_mappings.screen_analog_input_pin ) # accelerometer setup self.ax = Aio(self.pin_mappings.accel_x_pin) self.ay = Aio(self.pin_mappings.accel_y_pin) self.az = Aio(self.pin_mappings.accel_z_pin) self.acceleration_detected = False def update_hardware_state(self): """ Update hardware state. """ current_acceleration = self.detect_acceleration() if current_acceleration != self.acceleration_detected: if current_acceleration: self.trigger_hardware_event(ACCELERATION_DETECTED) self.acceleration_detected = current_acceleration # hardware functions def detect_acceleration(self): """ Detect acceleration change. """ ax = self.ax.read() ay = self.ay.read() az = self.az.read() if ax > 412 or ay > 412 or az > 412: return True else: return False def write_message(self, message, line=0): """ Write message to LCD screen. """ message = message.ljust(16) self.screen.setCursor(line, 0) self.screen.write(message) print(message) def change_background(self, color): """ Change LCD screen background color. No effect on the dfrobot. """ pass