Day 5: (Wed Sep 11) Switch Sensors¶
Notes for 2019-09-11. See also the Fall 2019 Calendar.
Notes from Day 4¶
comments on posting code
comments on demo2
Agenda¶
Administrative
Assignments
Due Mon Sep 16: Demo 2: Single-bit Feedback
Due Mon Sep 16:
Investigating Rocks and Sand
In-class
Discussion of photoreflector circuit.
Hands-on: read a switch in software: Exercise: Read Switch Input.
Hands-on: use a DMM: Exercise: Continuity Tests.
Hands-on: build an LTH-1550 seup on a breadboard: Lite-On LTH-1550 Reflective Photointerruptor
Ad hoc soldering tutorials for small groups.
Related: Exercise: Analog Sensing with Photocells or Pressure Pad Sensors
Lecture code samples¶
(See also Lecture Sample Code).
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 | // 1. read a switch input on pin 9
// 2. generate tones on a speaker on pin 5
// 3. demonstrate a simple state machine
// 4. demonstrate Serial debugging
const int SWITCH_PIN = 9;
const int SPEAKER_PIN = 5;
void setup()
{
Serial.begin(115200);
Serial.println("Hello!");
}
const float note_table[] = { 440.0, 523.25, 659.26, 523.25, 659.26, 523.25/2, 440.0, 659.26, 659.26*2, 523.25, -1 };
int nextnote = 0;
/// The loop function is called repeatedly by the Arduino system. In this
/// example, it executes once per cycle of the switch input.
void loop()
{
while(digitalRead(SWITCH_PIN) != 0) {
// Busywait for the switch to be pressed. Note that the body of the while
// is empty, this just loops reading the switch input until it goes low.
}
// The following is executed once per switch cycle, right after the switch is pressed.
float freq = note_table[nextnote];
Serial.print("Note: ");
Serial.println(freq);
tone(SPEAKER_PIN, freq);
// advance to the next note, looping at the end
nextnote = nextnote + 1;
if (note_table[nextnote] < 0) nextnote = 0;
// Busywait for the switch to be released: loop until the switch input goes high.
while(digitalRead(SWITCH_PIN) == 0) { }
// The following is executed once, right after the switch is released.
noTone(SPEAKER_PIN);
}
|