Code

  1. <span class="com">/*
  2. Double Transducer: Proximity to Light to Angle
  3. Kaitlin McTigue, Nathan Naylor
  4. This code
  5. 1. Mesures distance with an IR sensor
  6. 2. Maps that distance to a scale of 0-5
  7. 3. Lights an LED with brightness based on the IR value
  8. 4. Uses a photoreceptor to measure the amount of light emitted by the LED
  9. 5. Maps that light value to a number between 1 and 170
  10. 6. Spins a servo to that angle
  11. The angle of the servo represents the closeness of an object to the IR sensor!
  12. Inputs:
  13. 1 IR proximity sensor
  14. 1 photoreceptor
  15. 1 potentiometer
  16. Outputs:
  17. 1 LED
  18. 1 servometer
  19. Serial Monitor Feedback
  20. */</span><span class="pln">
  21. </span><span class="com">#include</span><span class="pln"> </span><span class="str"><Servo.h></span><span class="pln">
  22. </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">
  23. </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">
  24. </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">
  25. </span><span class="typ">Servo</span><span class="pln"> outservo</span><span class="pun">;</span><span class="pln">
  26. </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">
  27. 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">
  28. 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">
  29. 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">
  30. 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">
  31. </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">
  32. </span><span class="pun">}</span><span class="pln">
  33. </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">
  34. delay</span><span class="pun">(</span><span class="lit">50</span><span class="pun">);</span><span class="pln">
  35. </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">
  36. </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">
  37. 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">
  38. </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">
  39. </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">
  40. 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">
  41. </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>