Using a potentiometer and PWM on an Arduino to fade an LED.
-
-
/* POT to LED test -> by Owen Mundy March 11, 2010
-
from: http://itp.nyu.edu/physcomp/Labs/AnalogIn
-
—————————————————————*/
-
-
int potPin = 0; // Analog input pin that the potentiometer is attached to
-
int potValue = 0; // value read from the pot
-
int led = 9; // PWM pin that the LED is on. n.b. PWM 0 is on digital pin 9
-
-
void setup() {
-
// initialize serial communications at 9600 bps:
-
Serial.begin(9600);
-
// declare the led pin as an output:
-
pinMode(led, OUTPUT);
-
}
-
-
void loop() {
-
potValue = analogRead(potPin); // read the pot value
-
analogWrite(led, potValue/4); // PWM the LED with the pot value (divided by 4 to fit in a byte)
-
Serial.println("hello"); // print the pot value back to the debugger pane
-
delay(10); // wait 10 milliseconds before the next loop
-
}
-
Here is the schematic for the above project.
Using PWM and a potentiometer to fade an LED and drive a stepper motor, powered by a Boarduino RBBB.
-
-
/*
-
Owen Mundy
-
July 29, 2009
-
-
p. 262 of Physical Computing
-
Using BBB to run stepper motor by manually moving steppers
-
-
*/
-
-
int pin1 = 3; // PWM
-
int pin2 = 5; // PWM
-
int pin3 = 6; // PWM
-
int pin4 = 9; // PWM
-
int ledpin = 13; // LED
-
int led = false; // LED monitor
-
int motor_time_lapse = 80;
-
-
int potPin = 0; // Analog input pin that the potentiometer is attached to
-
int potValue = 0; // value read from the pot
-
int ledPotPin = 11; // PWM pin that the LED is on. n.b. PWM 0 is on digital pin 9
-
-
-
void setup()
-
{
-
pinMode(pin1, OUTPUT); // sets the pin as output
-
pinMode(pin2, OUTPUT); // sets the pin as output
-
pinMode(pin3, OUTPUT); // sets the pin as output
-
pinMode(pin4, OUTPUT); // sets the pin as output
-
pinMode(ledpin, OUTPUT); // sets the pin as output
-
-
// initialize serial communications at 9600 bps:
-
Serial.begin(9600);
-
// declare the led pin as an output:
-
pinMode(ledPotPin, OUTPUT);
-
}
-
-
void loop()
-
{
-
potValue = analogRead(potPin); // read the pot value
-
analogWrite(ledPotPin, potValue/4); // PWM the LED with the pot value (divided by 4 to fit in a byte)
-
Serial.println(potValue);
-
-
digitalWrite(pin1, HIGH); // on
-
digitalWrite(pin2, LOW); // off
-
digitalWrite(pin3, HIGH); // on
-
digitalWrite(pin4, LOW); // off
-
delay(motor_time_lapse); // wait
-
-
-
digitalWrite(pin1, LOW); // off
-
digitalWrite(pin2, HIGH); // on
-
digitalWrite(pin3, HIGH); // on
-
digitalWrite(pin4, LOW); // off
-
delay(motor_time_lapse); // wait
-
-
digitalWrite(pin1, LOW); // off
-
digitalWrite(pin2, HIGH); // on
-
digitalWrite(pin3, LOW); // off
-
digitalWrite(pin4, HIGH); // on
-
delay(motor_time_lapse); // wait
-
-
-
digitalWrite(pin1, HIGH); // on
-
digitalWrite(pin2, LOW); // off
-
digitalWrite(pin3, LOW); // off
-
digitalWrite(pin4, HIGH); // on
-
delay(motor_time_lapse); // wait
-
-
blink();
-
}
-
-
void blink()
-
{
-
if (led == false)
-
{
-
led = true;
-
digitalWrite(ledpin, HIGH); // on
-
}
-
else
-
{
-
led = false;
-
digitalWrite(ledpin, LOW); // on
-
}
-
}
Does the reed the value of the analog pot or do u have to change the code. EX. if I have a 5k pot than I switch it out for a 10K pot will the program reed it and than change the code to operate with 10K pot?
Yep, will word only, no problems there only POT scale will react different, hard to controll
preferrable to take a 1K pot.
Made a sketch for fan controll with LCD (Not tested)
#include
ShiftLCD lcd(2, 4, 3);
int fanPulse = 1;
unsigned long pulseDuration;
int potPin = 0; // Analog input pin that the potentiometer is attached to
int potValue = 0; // value read from the pot
int fan = 3; // PWM pin that the LED is on. n.b. PWM 0 is on digital pin 9
void setup()
{
Serial.begin(9600);
lcd.begin(20, 4);
pinMode(fan, OUTPUT);
pinMode(fanPulse, INPUT);
digitalWrite(fanPulse,HIGH);
}
void readPulse() {
pulseDuration = pulseIn(fanPulse, LOW);
double frequency = 1000000/pulseDuration;
Serial.print(“pulse duration:”);
Serial.println(pulseDuration);
Serial.print(“time for full rev. (microsec.):”);
Serial.println(pulseDuration*2);
Serial.print(“freq. (Hz):”);
lcd.setCursor(0,1);
lcd.print(“FREQUENTIE: “);
Serial.println(frequency/2);
lcd.setCursor(12,1);
lcd.println(frequency/2);
Serial.print(“RPM:”);
lcd.setCursor(0,0);
lcd.print(“TOERENTAL: “);
Serial.println(frequency/2*60);
lcd.setCursor(12,0);
lcd.println(frequency/2*60);
}
void loop()
{
potValue = analogRead(potPin); // read the pot value
analogWrite(fan, potValue/4); // PWM the LED with the pot value (divided by 4 to fit in a byte)
readPulse();
delay(25);
}
Your wiring diagram is incorrect but your photos do show a correct connection. Center pin goes to Analog Input. The way you have it shown will short the 5V to ground when the pot is turned all the way to one side.