קורס RB07 רובטיקס בלוקס 016 : מבוא לפייתון פיתוח רובוטיקה – רובוטיקס בלוקס
שימוש בערכת Roxer D2
שיעור זה נילמד – גלאי מרחק , חזרה על באזר לדים ומסך
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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
/********* רובוטקיס בלוקס גלאי רוורס http://www.robotronix.co.il לימודי רובוטיקה ותוכנה חוג רובוטיקה *********/ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED width, in pixels #define SCREEN_HEIGHT 64 // OLED height, in pixels Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); #define io16 16 #define io15 15 #define io23 23 #define io2 2 #define io4 4 #define io0 0 #define EmergecyButton 14 const int trigPin = 0; const int echoPin = 4; //define sound speed in cm/uS #define SOUND_SPEED 0.034 #define CM_TO_INCH 0.393701 long duration; float distanceCm; float distanceInch; void setup() { Serial.begin(115200); // Starts the serial communication pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input pinMode(io15, OUTPUT); pinMode(io2, OUTPUT); pinMode(io16, OUTPUT); pinMode(io23, OUTPUT); // initialize OLED display with I2C address 0x3C if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("failed to start SSD1306 OLED")); while (1); } delay(2000); // wait two seconds for initializing oled.clearDisplay(); // clear display oled.setTextSize(1); // set text size oled.setTextColor(WHITE); // set text color oled.setCursor(0, 2); // set position to display (x,y) oled.println("Robotics Blocks"); // set text oled.display(); } char d[20]; float distanceCM; void loop() { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculate the distance distanceCm = duration * SOUND_SPEED/2; // Convert to inches distanceInch = distanceCm * CM_TO_INCH; // Prints the distance in the Serial Monitor Serial.print("Distance (cm): "); Serial.println(distanceCm); //Serial.print("Distance (inch): "); //Serial.println(distanceInch); // Convert the distance to a string with two decimal places oled.clearDisplay(); // clear display dtostrf(distanceCm, 6, 1, d); oled.setTextSize(3); oled.setCursor(0, 20); // set position to display (x,y) oled.println(d); // set text oled.display(); delay(100); if (distanceCm >=20) { // GREED digitalWrite(15, HIGH); digitalWrite(2, LOW); digitalWrite(23, LOW); } else { // RED digitalWrite(15, LOW); digitalWrite(2, HIGH); digitalWrite(23, HIGH); } } |
\
-
אויר: 343 מטר לשניה
-
מים : 1,482 מטר לשניה
-
פלדה: 5,960 מטר לשניה
-
עץ: 3,500 מטר לשניה
-
נייר: 3,700 מטר לשניה
נחשב
כדי לחשב את הזמן באלפיות שניות שלוקח לצליל לעבור מרחק של 0.3 מטר ו-1.3 מטר, נשתמש בנוסחה:
זמן = מרחק / מהירות
כאשר המרחק הוא המרחק שהקול עובר ומהירות היא מהירות הקול בתווך שדרכו הוא עובר. להלן החישובים:
לאוויר:
מהירות הקול באוויר בטמפרטורת החדר: 343 מטר לשנייה
זמן לנסוע 0.3 מטר באוויר: 0.3 / 343 = 0.000875 שניות = 0.875 מילישניות
זמן לנסוע 1.3 מטר באוויר: 1.3 / 343 = 0.003788 שניות = 3.788 מילישניות
עבור מים:
מהירות הקול במים בטמפרטורת החדר: 1,482 מטר לשנייה
זמן נסיעה 0.3 מטר במים: 0.3 / 1482 = 0.000202 שניות = 0.202 מילישניות
זמן נסיעה 1.3 מטר במים: 1.3 / 1482 = 0.000877 שניות = 0.877 מילישניות
עבור פלדה:
מהירות הקול בפלדה בטמפרטורת החדר: 5,960 מטר לשנייה
זמן נסיעה של 0.3 מטר בפלדה: 0.3 / 5960 = 0.0000503 שניות = 0.0503 מילישניות
זמן נסיעה 1.3 מטר בפלדה: 1.3 / 5960 = 0.0002185 שניות = 0.2185 מילישניות
בשביל עץ:
מהירות הקול בעץ בטמפרטורת החדר: 3,500 מטר לשנייה
זמן נסיעה 0.3 מטר בעץ: 0.3 / 3500 = 0.0000857 שניות = 0.0857 מילישניות
זמן נסיעה של 1.3 מטר בעץ: 1.3 / 3500 = 0.0003714 שניות = 0.3714 מילישניות
עבור נייר:
מהירות הקול בנייר בטמפרטורת החדר: 3,700 מטר לשנייה
זמן נסיעה 0.3 מטר בנייר: 0.3 / 3700 = 0.0000811 שניות = 0.0811 מילישניות
זמן נסיעה של 1.3 מטר בנייר: 1.3 / 3700 = 0.0003514 שניות = 0.3514 מילישניות
שימו לב שחישובים אלו מניחים שהקול נע בקו ישר ושאין גורמים אחרים, כגון השתקפות או שבירה, שעשויים להשפיע על הזמן שלוקח לצליל לעבור את המרחקים הנתונים.
https://fb.watch/jyAqyPF3CM/
העשרה