Wednesday, June 7, 2017
PWM Motor Drive
CODE FOR PWM DRIVE
int motor = 9;
int speed = 0;
void setup() {
pinMode(motor, OUTPUT);
}
void loop() {
analogWrite(motor, speed);
speed = speed + 31;
if (speed > 250)
{
speed = 255;
}
delay(4000);
if (speed > 250)
{
speed = 0;
}
}
Monday, June 5, 2017
Seven Segment Display Numbers
Code for driving segment display. To drive a common cathode the NOT operator ! must be removed from the front of the array in the highlighted part of the code.
//
make an array to save Sev Seg pin configuration of numbers
int
num_array[10][7] = { { 1,1,1,1,1,1,0
}, // 0
{ 0,1,1,0,0,0,0
}, // 1
{ 1,1,0,1,1,0,1
}, // 2
{ 1,1,1,1,0,0,1
}, // 3
{ 0,1,1,0,0,1,1
}, // 4
{ 1,0,1,1,0,1,1
}, // 5
{ 1,0,1,1,1,1,1
}, // 6
{ 1,1,1,0,0,0,0
}, // 7
{ 1,1,1,1,1,1,1
}, // 8
{ 1,1,1,0,0,1,1
}}; // 9
//function
header
void
Num_Write(int);
void
setup()
{
// set pin modes
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
void
loop()
{
for (int counter = 10; counter > 0;
--counter)
{
delay(1000);
Num_Write(counter-1);
}
delay(5000);
}
//
this functions writes values to the sev seg pins
void
Num_Write(int number)
{
int pin= 6;
for (int j=0; j < 7; j++) {
digitalWrite(pin, !num_array[number][j]);
//Inverted array value due to Common Anode display
pin++;
}
}
Common Anode Seven-Segment Display Test
// 7 Segment test
void setup()
{
// define pin modes
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
void loop()
{
for(int i=6;i<13;i++) //Clear LEDs since the outputs start LOW (LED ON)
{
digitalWrite(i,HIGH);
delay(1);
}
// loop to turn leds segments ON by sinking them (taking pins to GND)
for(int i=6;i<13;i++)
{
digitalWrite(i,LOW);
delay(600);
}
// loop to turn leds segnemts OFF by taking the pins to V+
for(int i=6;i<13;i++)
{
digitalWrite(i,HIGH);
delay(600);
}
delay(1000);
}
Subscribe to:
Posts (Atom)