Code
/*
Double Transducer: Proximity to Light to Angle
Kaitlin McTigue, Nathan Naylor
This code
1. Mesures distance with an IR sensor
2. Maps that distance to a scale of 0-5
3. Lights an LED with brightness based on the IR value
4. Uses a photoreceptor to measure the amount of light emitted by the LED
5. Maps that light value to a number between 1 and 170
6. Spins a servo to that angle
The angle of the servo represents the closeness of an object to the IR sensor!
Inputs:
1 IR proximity sensor
1 photoreceptor
1 potentiometer
Outputs:
1 LED
1 servometer
Serial Monitor Feedback
*/
#include <Servo.h>
const int LEDPIN = 3; //digital
const int PHOTOPIN = A1; //analog
const int IRPIN = A0; //analog
Servo outservo;
void setup() {
outservo.attach(2); // attaches the servo on pin
pinMode(IRPIN, INPUT);
pinMode(LEDPIN, OUTPUT);
pinMode(PHOTOPIN, INPUT);
Serial.begin(9600); // Open serial monitor at 9600
}
void loop() {
delay(50);
int irVal = analogRead(IRPIN); //read distance
int ledVal = map(100, 500, irVal, 0, 5); //convert IR input to a scale 0 to 5 volts
analogWrite(LEDPIN, ledVal); //brighten LED as IR distance is closer
int photoVal = analogRead(PHOTOPIN); //red LED brightness
int servoVal = map(400, 500, photoVal, 170, 0); //convert photoreceptor input to a scale of 170 to 0
outservo.write(servoVal); //move servo between 0 and 170 degrees
}
- <span class="com">/*
- Double Transducer: Proximity to Light to Angle
- Kaitlin McTigue, Nathan Naylor
-
- This code
- 1. Mesures distance with an IR sensor
- 2. Maps that distance to a scale of 0-5
- 3. Lights an LED with brightness based on the IR value
- 4. Uses a photoreceptor to measure the amount of light emitted by the LED
- 5. Maps that light value to a number between 1 and 170
- 6. Spins a servo to that angle
- The angle of the servo represents the closeness of an object to the IR sensor!
-
- Inputs:
- 1 IR proximity sensor
- 1 photoreceptor
- 1 potentiometer
- Outputs:
- 1 LED
- 1 servometer
- Serial Monitor Feedback
- */</span><span class="pln">
- </span><span class="com">#include</span><span class="pln"> </span><span class="str"><Servo.h></span><span class="pln">
- </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> LEDPIN </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln"> </span><span class="com">//digital</span><span class="pln">
- </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> PHOTOPIN </span><span class="pun">=</span><span class="pln"> A1</span><span class="pun">;</span><span class="pln"> </span><span class="com">//analog</span><span class="pln">
- </span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> IRPIN </span><span class="pun">=</span><span class="pln"> A0</span><span class="pun">;</span><span class="pln"> </span><span class="com">//analog</span><span class="pln">
- </span><span class="typ">Servo</span><span class="pln"> outservo</span><span class="pun">;</span><span class="pln">
- </span><span class="kwd">void</span><span class="pln"> setup</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- outservo</span><span class="pun">.</span><span class="pln">attach</span><span class="pun">(</span><span class="lit">2</span><span class="pun">);</span><span class="pln"> </span><span class="com">// attaches the servo on pin </span><span class="pln">
- pinMode</span><span class="pun">(</span><span class="pln">IRPIN</span><span class="pun">,</span><span class="pln"> INPUT</span><span class="pun">);</span><span class="pln">
- pinMode</span><span class="pun">(</span><span class="pln">LEDPIN</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">
- pinMode</span><span class="pun">(</span><span class="pln">PHOTOPIN</span><span class="pun">,</span><span class="pln"> INPUT</span><span class="pun">);</span><span class="pln">
- </span><span class="typ">Serial</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">(</span><span class="lit">9600</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Open serial monitor at 9600</span><span class="pln">
- </span><span class="pun">}</span><span class="pln">
- </span><span class="kwd">void</span><span class="pln"> loop</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
- delay</span><span class="pun">(</span><span class="lit">50</span><span class="pun">);</span><span class="pln">
- </span><span class="kwd">int</span><span class="pln"> irVal </span><span class="pun">=</span><span class="pln"> analogRead</span><span class="pun">(</span><span class="pln">IRPIN</span><span class="pun">);</span><span class="pln"> </span><span class="com">//read distance</span><span class="pln">
- </span><span class="kwd">int</span><span class="pln"> ledVal </span><span class="pun">=</span><span class="pln"> map</span><span class="pun">(</span><span class="lit">100</span><span class="pun">,</span><span class="pln"> </span><span class="lit">500</span><span class="pun">,</span><span class="pln"> irVal</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">);</span><span class="pln"> </span><span class="com">//convert IR input to a scale 0 to 5 volts </span><span class="pln">
- analogWrite</span><span class="pun">(</span><span class="pln">LEDPIN</span><span class="pun">,</span><span class="pln"> ledVal</span><span class="pun">);</span><span class="pln"> </span><span class="com">//brighten LED as IR distance is closer</span><span class="pln">
- </span><span class="kwd">int</span><span class="pln"> photoVal </span><span class="pun">=</span><span class="pln"> analogRead</span><span class="pun">(</span><span class="pln">PHOTOPIN</span><span class="pun">);</span><span class="pln"> </span><span class="com">//red LED brightness</span><span class="pln">
- </span><span class="kwd">int</span><span class="pln"> servoVal </span><span class="pun">=</span><span class="pln"> map</span><span class="pun">(</span><span class="lit">400</span><span class="pun">,</span><span class="pln"> </span><span class="lit">500</span><span class="pun">,</span><span class="pln"> photoVal</span><span class="pun">,</span><span class="pln"> </span><span class="lit">170</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln"> </span><span class="com">//convert photoreceptor input to a scale of 170 to 0</span><span class="pln">
- outservo</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="pln">servoVal</span><span class="pun">);</span><span class="pln"> </span><span class="com">//move servo between 0 and 170 degrees</span><span class="pln">
- </span><span class="pun">}</span>
<span class="com">/*
Double Transducer: Proximity to Light to Angle
Kaitlin McTigue, Nathan Naylor
This code
1. Mesures distance with an IR sensor
2. Maps that distance to a scale of 0-5
3. Lights an LED with brightness based on the IR value
4. Uses a photoreceptor to measure the amount of light emitted by the LED
5. Maps that light value to a number between 1 and 170
6. Spins a servo to that angle
The angle of the servo represents the closeness of an object to the IR sensor!
Inputs:
1 IR proximity sensor
1 photoreceptor
1 potentiometer
Outputs:
1 LED
1 servometer
Serial Monitor Feedback
*/</span><span class="pln">
</span><span class="com">#include</span><span class="pln"> </span><span class="str"><Servo.h></span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> LEDPIN </span><span class="pun">=</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln"> </span><span class="com">//digital</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> PHOTOPIN </span><span class="pun">=</span><span class="pln"> A1</span><span class="pun">;</span><span class="pln"> </span><span class="com">//analog</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> IRPIN </span><span class="pun">=</span><span class="pln"> A0</span><span class="pun">;</span><span class="pln"> </span><span class="com">//analog</span><span class="pln">
</span><span class="typ">Servo</span><span class="pln"> outservo</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> setup</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
outservo</span><span class="pun">.</span><span class="pln">attach</span><span class="pun">(</span><span class="lit">2</span><span class="pun">);</span><span class="pln"> </span><span class="com">// attaches the servo on pin </span><span class="pln">
pinMode</span><span class="pun">(</span><span class="pln">IRPIN</span><span class="pun">,</span><span class="pln"> INPUT</span><span class="pun">);</span><span class="pln">
pinMode</span><span class="pun">(</span><span class="pln">LEDPIN</span><span class="pun">,</span><span class="pln"> OUTPUT</span><span class="pun">);</span><span class="pln">
pinMode</span><span class="pun">(</span><span class="pln">PHOTOPIN</span><span class="pun">,</span><span class="pln"> INPUT</span><span class="pun">);</span><span class="pln">
</span><span class="typ">Serial</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">(</span><span class="lit">9600</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Open serial monitor at 9600</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="kwd">void</span><span class="pln"> loop</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
delay</span><span class="pun">(</span><span class="lit">50</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> irVal </span><span class="pun">=</span><span class="pln"> analogRead</span><span class="pun">(</span><span class="pln">IRPIN</span><span class="pun">);</span><span class="pln"> </span><span class="com">//read distance</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> ledVal </span><span class="pun">=</span><span class="pln"> map</span><span class="pun">(</span><span class="lit">100</span><span class="pun">,</span><span class="pln"> </span><span class="lit">500</span><span class="pun">,</span><span class="pln"> irVal</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">);</span><span class="pln"> </span><span class="com">//convert IR input to a scale 0 to 5 volts </span><span class="pln">
analogWrite</span><span class="pun">(</span><span class="pln">LEDPIN</span><span class="pun">,</span><span class="pln"> ledVal</span><span class="pun">);</span><span class="pln"> </span><span class="com">//brighten LED as IR distance is closer</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> photoVal </span><span class="pun">=</span><span class="pln"> analogRead</span><span class="pun">(</span><span class="pln">PHOTOPIN</span><span class="pun">);</span><span class="pln"> </span><span class="com">//red LED brightness</span><span class="pln">
</span><span class="kwd">int</span><span class="pln"> servoVal </span><span class="pun">=</span><span class="pln"> map</span><span class="pun">(</span><span class="lit">400</span><span class="pun">,</span><span class="pln"> </span><span class="lit">500</span><span class="pun">,</span><span class="pln"> photoVal</span><span class="pun">,</span><span class="pln"> </span><span class="lit">170</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">);</span><span class="pln"> </span><span class="com">//convert photoreceptor input to a scale of 170 to 0</span><span class="pln">
outservo</span><span class="pun">.</span><span class="pln">write</span><span class="pun">(</span><span class="pln">servoVal</span><span class="pun">);</span><span class="pln"> </span><span class="com">//move servo between 0 and 170 degrees</span><span class="pln">
</span><span class="pun">}</span>
Comments are closed.