mirror of
https://github.com/KevinMidboe/Arduino.git
synced 2026-01-29 12:25:33 +00:00
Init commit with many years of arduino sketches and projects. I dont know if the esp8266 includes much, but there are also libraries. I hope they dont have crazy automatic versioning through the Arduino IDE.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
|
||||
int leftCCW[] = {8, 9, 10, 11};
|
||||
int leftCW[] = {11, 10, 9, 8};
|
||||
int leftButtons[] = {2, 3};
|
||||
|
||||
int rightCCW[] = {4, 5, 6, 7};
|
||||
int rightCW[] = {7, 6, 5, 4};
|
||||
int rightButtons[] = {0, 1};
|
||||
|
||||
const int motorSteps[8][4] = {
|
||||
{1, 0, 0, 0},
|
||||
{1, 1, 0, 0},
|
||||
{0, 1, 0, 0},
|
||||
{0, 1, 1, 0},
|
||||
{0, 0, 0, 1},
|
||||
{0, 0, 1, 1},
|
||||
{0, 0, 0, 1},
|
||||
{1, 0, 0, 1}
|
||||
};
|
||||
|
||||
int motorSpeed = 0;
|
||||
|
||||
void setup() {
|
||||
for (int i=0; i < 4; i++) {
|
||||
pinMode(leftCW[i], OUTPUT);
|
||||
pinMode(rightCW[i], OUTPUT);
|
||||
}
|
||||
for (int i = 0; i < 2; i++) {
|
||||
pinMode(leftButtons[i], INPUT);
|
||||
pinMode(rightButtons[i], INPUT);
|
||||
}
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (analogRead(leftButtons[0]) == 0) {
|
||||
leftUp();
|
||||
} else if(analogRead(leftButtons[1]) == 1){
|
||||
leftDown();
|
||||
}
|
||||
|
||||
if (analogRead(leftButtons[0]) == 0) {
|
||||
rightUp();
|
||||
} else if(analogRead(leftButtons[1]) == 1){
|
||||
rightDown();
|
||||
}
|
||||
}
|
||||
|
||||
void leftUp() {
|
||||
for(int i=0; i < 8; i++){
|
||||
for(int j=0; j < 4; j++){
|
||||
// Left motor
|
||||
digitalWrite(leftCW[j], motorSteps[j][i]);
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void leftDown() {
|
||||
for(int i=0; i < 8; i++){
|
||||
for(int j=0; j < 4; j++){
|
||||
// Left motor
|
||||
digitalWrite(leftCCW[j], motorSteps[j][i]);
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void rightUp() {
|
||||
for(int i=0; i < 8; i++){
|
||||
for(int j=0; j < 4; j++){
|
||||
// Right motor
|
||||
digitalWrite(rightCCW[j], motorSteps[j][i]);
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void rightDown() {
|
||||
for(int i=0; i < 8; i++){
|
||||
for(int j=0; j < 4; j++){
|
||||
// Right motor
|
||||
digitalWrite(rightCW[j], motorSteps[j][i]);
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
166
Projects/28BYJ Stepper/first_test/first_test.ino
Normal file
166
Projects/28BYJ Stepper/first_test/first_test.ino
Normal file
@@ -0,0 +1,166 @@
|
||||
// This Arduino example demonstrates bidirectional operation of a
|
||||
// 28BYJ-48, which is readily available on eBay, using a ULN2003
|
||||
// interface board to drive the stepper. The 28BYJ-48 motor is a 4-
|
||||
// phase, 8-beat motor, geared down by a factor of 68. Onint e bipolar
|
||||
// winding is on motor pins 1 & 3 and the other on motor pins 2 & 4.
|
||||
// Refer to the manufacturer's documentation of Changzhou Fulling
|
||||
// Motor Co., Ltd., among others. The step angle is 5.625/64 and the
|
||||
// operating Frequency is 100pps. Current draw is 92mA. In this
|
||||
// example, the speed and direction of the stepper motor is determined
|
||||
// by adjusting a 1k-ohm potentiometer connected to Arduino pin A2.
|
||||
// When the potentiometer is rotated fully counterclockwise, the motor
|
||||
// will rotate at full counterclockwise speed. As the potentiometer is
|
||||
// rotated clockwise, the motor will continue to slow down until is
|
||||
// reaches its minimum speed at the the potentiometer's midpoint value .
|
||||
// Once the potentiometer crosses its midpoint, the motor will reverse
|
||||
// direction. As the potentiometer is rotated further clockwise, the speed
|
||||
// of the motor will increase until it reaches its full clockwise rotation
|
||||
// speed when the potentiometer has been rotated fully clockwise.
|
||||
////////////////////////////////////////////////
|
||||
|
||||
//declare variables for the motor pins
|
||||
int motorPin1 = 8; // Blue - 28BYJ48 pin 1
|
||||
int motorPin2 = 9; // Pink - 28BYJ48 pin 2
|
||||
int motorPin3 = 10; // Yellow - 28BYJ48 pin 3
|
||||
int motorPin4 = 11; // Orange - 28BYJ48 pin 4
|
||||
// Red - 28BYJ48 pin 5 (VCC)
|
||||
|
||||
int motorSpeed = 0; //variable to set stepper speed
|
||||
int potPin = 2; //potentiometer connected to A2
|
||||
int potValue = 0; //variable to read A0 input
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
void setup() {
|
||||
//declare the motor pins as outputs
|
||||
pinMode(motorPin1, OUTPUT);
|
||||
pinMode(motorPin2, OUTPUT);
|
||||
pinMode(motorPin3, OUTPUT);
|
||||
pinMode(motorPin4, OUTPUT);
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
void loop(){
|
||||
|
||||
//potValue = analogRead(potPin); // read the value of the potentiometer
|
||||
Serial.println(potValue); // View full range from 0 - 1024 in Serial Monitor
|
||||
if (potValue < 535){ // if potentiometer reads 0 to 535 do this
|
||||
motorSpeed = (potValue/15 + 5); //scale potValue to be useful for motor
|
||||
clockwise(); //go to the ccw rotation function
|
||||
}
|
||||
else { //value of the potentiometer is 512 - 1024
|
||||
motorSpeed = ((1024-potValue)/15 + 5); //scale potValue for motor speed
|
||||
counterclockwise(); //go the the cw rotation function
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//set pins to ULN2003 high in sequence from 1 to 4
|
||||
//delay "motorSpeed" between each pin setting (to determine speed)
|
||||
|
||||
void counterclockwise (){
|
||||
// 1
|
||||
digitalWrite(motorPin1, HIGH);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin4, LOW);
|
||||
delay(motorSpeed);
|
||||
// 2
|
||||
digitalWrite(motorPin1, HIGH);
|
||||
digitalWrite(motorPin2, HIGH);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin4, LOW);
|
||||
delay (motorSpeed);
|
||||
// 3
|
||||
digitalWrite(motorPin1, LOW);
|
||||
digitalWrite(motorPin2, HIGH);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin4, LOW);
|
||||
delay(motorSpeed);
|
||||
// 4
|
||||
digitalWrite(motorPin1, LOW);
|
||||
digitalWrite(motorPin2, HIGH);
|
||||
digitalWrite(motorPin3, HIGH);
|
||||
digitalWrite(motorPin4, LOW);
|
||||
delay(motorSpeed);
|
||||
// 5
|
||||
digitalWrite(motorPin1, LOW);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin3, HIGH);
|
||||
digitalWrite(motorPin4, LOW);
|
||||
delay(motorSpeed);
|
||||
// 6
|
||||
digitalWrite(motorPin1, LOW);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin3, HIGH);
|
||||
digitalWrite(motorPin4, HIGH);
|
||||
delay (motorSpeed);
|
||||
// 7
|
||||
digitalWrite(motorPin1, LOW);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin4, HIGH);
|
||||
delay(motorSpeed);
|
||||
// 8
|
||||
digitalWrite(motorPin1, HIGH);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin4, HIGH);
|
||||
delay(motorSpeed);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//set pins to ULN2003 high in sequence from 4 to 1
|
||||
//delay "motorSpeed" between each pin setting (to determine speed)
|
||||
|
||||
void clockwise(){
|
||||
// 1
|
||||
digitalWrite(motorPin4, HIGH);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin1, LOW);
|
||||
delay(motorSpeed);
|
||||
// 2
|
||||
digitalWrite(motorPin4, HIGH);
|
||||
digitalWrite(motorPin3, HIGH);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin1, LOW);
|
||||
delay (motorSpeed);
|
||||
// 3
|
||||
digitalWrite(motorPin4, LOW);
|
||||
digitalWrite(motorPin3, HIGH);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin1, LOW);
|
||||
delay(motorSpeed);
|
||||
// 4
|
||||
digitalWrite(motorPin4, LOW);
|
||||
digitalWrite(motorPin3, HIGH);
|
||||
digitalWrite(motorPin2, HIGH);
|
||||
digitalWrite(motorPin1, LOW);
|
||||
delay(motorSpeed);
|
||||
// 5
|
||||
digitalWrite(motorPin4, LOW);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin2, HIGH);
|
||||
digitalWrite(motorPin1, LOW);
|
||||
delay(motorSpeed);
|
||||
// 6
|
||||
digitalWrite(motorPin4, LOW);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin2, HIGH);
|
||||
digitalWrite(motorPin1, HIGH);
|
||||
delay (motorSpeed);
|
||||
// 7
|
||||
digitalWrite(motorPin4, LOW);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin1, HIGH);
|
||||
delay(motorSpeed);
|
||||
// 8
|
||||
digitalWrite(motorPin4, HIGH);
|
||||
digitalWrite(motorPin3, LOW);
|
||||
digitalWrite(motorPin2, LOW);
|
||||
digitalWrite(motorPin1, HIGH);
|
||||
delay(motorSpeed);
|
||||
}
|
||||
95
Projects/28BYJ Stepper/second/second.ino
Normal file
95
Projects/28BYJ Stepper/second/second.ino
Normal file
@@ -0,0 +1,95 @@
|
||||
|
||||
int leftCCW[] = {8, 9, 10, 11};
|
||||
int leftCW[] = {11, 10, 9, 8};
|
||||
int leftButtons[] = {0, 1};
|
||||
|
||||
int rightCCW[] = {4, 5, 6, 7};
|
||||
int rightCW[] = {7, 6, 5, 4};
|
||||
int rightButtons[] = {2, 3};
|
||||
|
||||
const int motorSteps[8][4] = {
|
||||
{1, 0, 0, 0},
|
||||
{1, 1, 0, 0},
|
||||
{0, 1, 0, 0},
|
||||
{0, 1, 1, 0},
|
||||
{0, 0, 0, 1},
|
||||
{0, 0, 1, 1},
|
||||
{0, 0, 0, 1},
|
||||
{1, 0, 0, 1}
|
||||
};
|
||||
|
||||
int motorSpeed = 0;
|
||||
|
||||
void setup()
|
||||
{
|
||||
for (int i=0; i < 4; i++) {
|
||||
pinMode(leftCW[i], OUTPUT);
|
||||
pinMode(rightCW[i], OUTPUT);
|
||||
}
|
||||
for (int i = 0; i < 2; i++) {
|
||||
pinMode(leftButtons[i], INPUT);
|
||||
pinMode(rightButtons[i], INPUT);
|
||||
}
|
||||
|
||||
pinMode(12, INPUT);
|
||||
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
if (digitalRead(12) == LOW)
|
||||
{ windUp(); }
|
||||
else { windDown(); }
|
||||
}
|
||||
|
||||
void windUp() {
|
||||
while(digitalRead(rightButtons[1]) == LOW || digitalRead(leftButtons[1] == LOW)){
|
||||
if (digitalRead(rightButtons[1] == LOW))
|
||||
{
|
||||
for(int i=0; i < 8; i++){
|
||||
for(int j=0; j < 4; j++){
|
||||
// Right motor
|
||||
digitalWrite(rightCCW[j], motorSteps[j][i]);
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (digitalRead(leftButtons[1] == LOW))
|
||||
{
|
||||
for(int i=0; i < 8; i++){
|
||||
for(int j=0; j < 4; j++){
|
||||
// Left motor
|
||||
digitalWrite(leftCW[j], motorSteps[j][i]);
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void windDown() {
|
||||
while(digitalRead(rightButtons[0]) == LOW || digitalRead(leftButtons[0] == LOW)){
|
||||
if (digitalRead(rightButtons[0] == LOW)) {
|
||||
for(int i=0; i < 8; i++){
|
||||
for(int j=0; j < 4; j++){
|
||||
// Right motor
|
||||
digitalWrite(rightCW[j], motorSteps[j][i]);
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (digitalRead(leftButtons[0] == LOW)) {
|
||||
for(int i=0; i < 8; i++){
|
||||
for(int j=0; j < 4; j++){
|
||||
// Left motor
|
||||
digitalWrite(leftCCW[j], motorSteps[j][i]);
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user