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);

}

Tuesday, May 30, 2017

PWM Motor Control



PWM Motor Code

This code makes the motor speed up until it reaches the highest speed possible and then it resets to low speed again.

------------------------

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;
  }

}

Wednesday, May 24, 2017

Target Game



Hook up the following circuit starting with the servo first.




int sensorPin = A0;
int ledPin = 13;
int sensorValue;
#include <Servo.h>
Servo myservo;
void setup()
{
  myservo.attach(9);
  pinMode(ledPin, OUTPUT);
  //Serial.begin(9600);
}
void loop()
{
  sensorValue = analogRead(sensorPin);
  //Serial.println(sensorValue); // Print value to monitor
  analogWrite(ledPin, sensorValue);
  if (sensorValue < 100)
  {
  myservo.write(180);              // tell servo to go to position in variable 'pos'
  delay(15);
  }
  else
  {
  myservo.write(90);    
  delay(2000);
  }
}