This week, we learned about all kinds of sensors and link it to the “map()” programming.
I chose the Ultrasonic Ranger, and added an LED to the circuit. when the distance goes greater, the LED shines brighter.
First, we tested the Ultrasonic Ranger.
And then we added an LED the circuit ,using the if&else program, making the LED shine when the distance exceeds 5 centimeters .
Finally, we began to use the “map()” function to make the lightness change accordingly with the distance . However, it seemed that the range we chose wasn’t perfect and it came out to be quite unstable.
So we went to the lab after recitation and asked fellows for help, and we got that! The key is to test again and again and find the range that is stable enough to showcase the change.
The following is my code:
/* Ping))) Sensor This sketch reads a PING))) ultrasonic rangefinder and returns the distance to the closest object in range. To do this, it sends a pulse to the sensor to initiate a reading, then listens for a pulse to return. The length of the returning pulse is proportional to the distance of the object from the sensor. The circuit: - +V connection of the PING))) attached to +5V - GND connection of the PING))) attached to ground - SIG connection of the PING))) attached to digital pin 7 created 3 Nov 2008 by David A. Mellis modified 30 Aug 2011 by Tom Igoe This example code is in the public domain. https://www.arduino.cc/en/Tutorial/BuiltInExamples/Ping */ // this constant won't change. It's the pin number of the sensor's output: const int pingPin = 7; int val; int led = 9; void setup() { // initialize serial communication: Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { // establish variables for duration of the ping, and the distance result // in inches and centimeters: long duration, inches, cm; // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(7, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(7, HIGH); delayMicroseconds(5); digitalWrite(3, LOW); // The same pin is used to read the signal from the PING))): a HIGH pulse // whose duration is the time (in microseconds) from the sending of the ping // to the reception of its echo off of an object. pinMode(3, INPUT); duration = pulseIn(3, HIGH); //val=analogRead(7); // if(val<300){ // digitalWrite(9,HIGH); // } else { // digitalWrite(9,LOW); // } //Serial.println(val); // convert the time into a distance inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.print(inches); Serial.print("in, "); Serial.print(cm); Serial.print("cm"); Serial.println(); if (cm > 0 %% cm < 100){ int newValue=map(cm, 5, 50, 0, 255); analogWrite(led, newValue); } delay(100); } long microsecondsToInches(long microseconds) { // According to Parallax's datasheet for the PING))), there are 73.746 // microseconds per inch (i.e. sound travels at 1130 feet per second). // This gives the distance travelled by the ping, outbound and return, // so we divide by 2 to get the distance of the obstacle. // See: https://www.parallax.com/package/ping-ultrasonic-distance-sensor-downloads/ return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { // The speed of sound is 340 m/s or 29 microseconds per centimeter. // The ping travels out and back, so to find the distance of the object we // take half of the distance travelled. return microseconds / 29 / 2; }
Question1: I intended to combine the Ultrasonic Ranger with an alarming light bulb, as a visualized form of how far or close two objects are located. For pragmatic use, it can be a warning for a safety distance to any dangerous places for people without ability to read the warning(child or the senior citizens for example ).
Question 2: I think it is basically because code itself is a language for computers to follow the steps set by human. It is strict and ruled, and is for the computer and the processor to learn and follow human’s instructions, somehow similar to following a recipe or tutorial.
Question 3: As computer exists, there happens to be a need for human to communicate and collaborate with computers, and so here comes algorithms . To communicate more efficiently, human beings begin to make efforts to cultivate their algorithmic thinking, and so the thinking habit of the whole human group begins changing as the development of information science accelerates.