רובוטיקה בבית ספר : קורס RS05 גלאי מרחק מיקרופייתון – רובוטיקס בלוקס
בצע תרגיל כיתה – חברת את המעכל הותכונה
1.הוספת ספריה שתומכת במסך OLED
1.3 הוספת הספריה : חפש את ספרית OLED ולחץ על כפתור
לאחר התקנת INSTALL נקבל את המסך
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# www.robotronix.co.il robotics blocks # חוג רובוטיקה , מיקרו פייתון , רובוטיקס בלוקס # https://robotronix.co.il/%d7%a8%d7%95%d7%91%d7%95%d7%98%d7%a8%d7%95%d7%a0%d7%99%d7%a7%d7%a1-%d7%9b%d7%9c%d7%9c%d7%99/%d7%97%d7%95%d7%92-%d7%a8%d7%95%d7%91%d7%95%d7%98%d7%99%d7%a7%d7%94-%d7%a1%d7%a4%d7%a8%d7%99%d7%99%d7%aa-%d7%93%d7%95%d7%92%d7%9e%d7%90%d7%95%d7%aa-%d7%9e%d7%99%d7%a7%d7%a8%d7%95-%d7%a4%d7%99/ import time from machine import Pin, SoftI2C import ssd1306 from hcsr04 import HCSR04 from time import sleep # ESP32 sensor = HCSR04(trigger_pin=0, echo_pin=4, echo_timeout_us=10000) led1 = Pin(2,Pin.OUT) # red led led = Pin(15,Pin.OUT) # hreen led buz = Pin(23,Pin.OUT) # buz button = Pin(35, Pin.IN, Pin.PULL_UP) # button connected to pin 4 button1 = Pin(25, Pin.IN, Pin.PULL_UP) # button connected to pin 4 # ESP32 Pin assignment i2c = SoftI2C(scl=Pin(22), sda=Pin(21)) # ESP8266 Pin assignment #i2c = SoftI2C(scl=Pin(5), sda=Pin(4)) oled_width = 128 oled_height = 64 oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c) print("Hello, Robotics blocks - led on off ") oled.text('Hello, World 1!', 0, 0) oled.show() while True: oled.fill(0) #oled.show() distance = sensor.distance_mm() print('Distance:', distance, 'mm') oled.text("Distance (mm)", 0, 15) oled.text(str(distance), 0, 35) oled.show() if distance <=100 : led1.value(1) led.value(0) buz.value(1) else: led.value(1) led1.value(0) buz.value(0) #if not button.value(): # buz.value(0) #else: # buz.value(1) sleep(0.25) while True: if not button.value(): buz.value(0) else: buz.value(1) led1.value(1) led.value(0) time.sleep(0.25) led.value(1) led1.value(0) time.sleep(0.25) |
התקן את הספריה
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import machine, time from machine import Pin __version__ = '0.2.0' __author__ = 'Roberto Sánchez' __license__ = "Apache License 2.0. https://www.apache.org/licenses/LICENSE-2.0" class HCSR04: """ Driver to use the untrasonic sensor HC-SR04. The sensor range is between 2cm and 4m. The timeouts received listening to echo pin are converted to OSError('Out of range') """ # echo_timeout_us is based in chip range limit (400cm) def __init__(self, trigger_pin, echo_pin, echo_timeout_us=500*2*30): """ trigger_pin: Output pin to send pulses echo_pin: Readonly pin to measure the distance. The pin should be protected with 1k resistor echo_timeout_us: Timeout in microseconds to listen to echo pin. By default is based in sensor limit range (4m) """ self.echo_timeout_us = echo_timeout_us # Init trigger pin (out) self.trigger = Pin(trigger_pin, mode=Pin.OUT, pull=None) self.trigger.value(0) # Init echo pin (in) self.echo = Pin(echo_pin, mode=Pin.IN, pull=None) def _send_pulse_and_wait(self): """ Send the pulse to trigger and listen on echo pin. We use the method `machine.time_pulse_us()` to get the microseconds until the echo is received. """ self.trigger.value(0) # Stabilize the sensor time.sleep_us(5) self.trigger.value(1) # Send a 10us pulse. time.sleep_us(10) self.trigger.value(0) try: pulse_time = machine.time_pulse_us(self.echo, 1, self.echo_timeout_us) return pulse_time except OSError as ex: if ex.args[0] == 110: # 110 = ETIMEDOUT raise OSError('Out of range') raise ex def distance_mm(self): """ Get the distance in milimeters without floating point operations. """ pulse_time = self._send_pulse_and_wait() # To calculate the distance we get the pulse_time and divide it by 2 # (the pulse walk the distance twice) and by 29.1 becasue # the sound speed on air (343.2 m/s), that It's equivalent to # 0.34320 mm/us that is 1mm each 2.91us # pulse_time // 2 // 2.91 -> pulse_time // 5.82 -> pulse_time * 100 // 582 mm = pulse_time * 100 // 582 return mm def distance_cm(self): """ Get the distance in centimeters with floating point operations. It returns a float """ pulse_time = self._send_pulse_and_wait() # To calculate the distance we get the pulse_time and divide it by 2 # (the pulse walk the distance twice) and by 29.1 becasue # the sound speed on air (343.2 m/s), that It's equivalent to # 0.034320 cm/us that is 1cm each 29.1us cms = (pulse_time / 2) / 29.1 return cms |
תרגיל כיתה 1
- שנה את המרחק בתוכנית מ 100 ל 60
- הוסף הודעה לטרמניל print(“keep distance “)