Sunteți pe pagina 1din 43

Prob 1.

Lab 5
#include <Encoder.h>

Encoder myEncoder(2,3);

//float value;

int encoder_value;

int enA = 10;

int in1 = 9;

int in2 = 8;

int in_encoder=2;

void count(void);

void setup()

pinMode(enA,OUTPUT);

pinMode(in1,OUTPUT);

pinMode(in2,OUTPUT);

pinMode(in_encoder,INPUT);

Serial.begin(9600);

attachInterrupt(2,count,FALLING);

encoder_value=0;

void loop()

digitalWrite(enA,HIGH);

Serial.println("...inainte...");

digitalWrite(in1,HIGH);

digitalWrite(in2,LOW);

1
analogWrite(enA,200);

delay(100);

encoder_value=analogRead(in_encoder);

Serial.println("...val cu intreruperi INAINTE...");

Serial.println(encoder_value);

delay(100);

Serial.println("...inapoi...");

digitalWrite(in1,LOW);

digitalWrite(in2,HIGH);

analogWrite(enA,200);

delay(100);

encoder_value=analogRead(in_encoder);

Serial.println("...val cu intreruperi INAPOI...");

Serial.println(encoder_value);

delay(100);

Serial.println("...SE OPRESTE 1 SEC...");

digitalWrite(in1,LOW);

digitalWrite(in2,LOW);

encoder_value=analogRead(in_encoder);

Serial.println("...val cu intrerupere OPRIRE...");

Serial.println(encoder_value);

encoder_value=0;

delay(100);

2
// for(int i=0; i<5; i++)

// {

// analogWrite(enA,228-10*i);

// delay(100);

// encoder_value=analogRead(in_encoder);

// Serial.println("...val cu intreruperi INAINTE...");

// Serial.println(encoder_value);

// delay(100);

// }

// encoder_value=0;

// Serial.println("...SE REIA LOOP...");

// Serial.println(encoder_value);

//// analogWrite(enA,200);

// delay(100);

// value = myEncoder.read();

// Serial.println("...valoarea inainte...");

// Serial.println(value);

// myEncoder.write(0);

// delay(100);

//

// Serial.println("...inapoi...");

// digitalWrite(in1,LOW);

// digitalWrite(in2,HIGH);

// digitalWrite(enA,HIGH);

// analogWrite(enA,200);

// delay(100);

//

// value=myEncoder.read();

// Serial.println("...valoare inapoi...");

// Serial.println(value);

3
// myEncoder.write(0);

// delay(0);

//

// Serial.println("...Se opreste 1 sec...");

// digitalWrite(in1,LOW);

// digitalWrite(in2,LOW);

// value=myEncoder.read();

// Serial.println("...valoare la oprire...");

// Serial.println(value);

// myEncoder.write(0);

// delay(1000);

void count()

encoder_value++;

Prob 2 lab 6
#include <Encoder.h>

Encoder myEncoder(2,3);

//float value;

int encoder_value;

int enA = 10;

int in1 = 9;

int in2 = 8;

int in_encoder=2;

void count(void);

4
void setup()

pinMode(enA,OUTPUT);

pinMode(in1,OUTPUT);

pinMode(in2,OUTPUT);

pinMode(in_encoder,INPUT);

Serial.begin(9600);

attachInterrupt(2,count,FALLING);

encoder_value=0;

void loop()

digitalWrite(enA,HIGH);

Serial.println("...inainte...");

digitalWrite(in1,HIGH);

digitalWrite(in2,LOW);

analogWrite(enA,200);

delay(100);

encoder_value=analogRead(in_encoder);

Serial.println("...val cu intreruperi INAINTE...");

Serial.println(encoder_value);

delay(100);

Serial.println("...inapoi...");

digitalWrite(in1,LOW);

digitalWrite(in2,HIGH);

analogWrite(enA,200);

5
delay(100);

encoder_value=analogRead(in_encoder);

Serial.println("...val cu intreruperi INAPOI...");

Serial.println(encoder_value);

delay(100);

Serial.println("...SE OPRESTE 1 SEC...");

digitalWrite(in1,LOW);

digitalWrite(in2,LOW);

encoder_value=analogRead(in_encoder);

Serial.println("...val cu intrerupere OPRIRE...");

Serial.println(encoder_value);

encoder_value=0;

delay(100);

// for(int i=0; i<5; i++)

// {

// analogWrite(enA,228-10*i);

// delay(100);

// encoder_value=analogRead(in_encoder);

// Serial.println("...val cu intreruperi INAINTE...");

// Serial.println(encoder_value);

// delay(100);

// }

// encoder_value=0;

// Serial.println("...SE REIA LOOP...");

// Serial.println(encoder_value);

6
//// analogWrite(enA,200);

// delay(100);

// value = myEncoder.read();

// Serial.println("...valoarea inainte...");

// Serial.println(value);

// myEncoder.write(0);

// delay(100);

//

// Serial.println("...inapoi...");

// digitalWrite(in1,LOW);

// digitalWrite(in2,HIGH);

// digitalWrite(enA,HIGH);

// analogWrite(enA,200);

// delay(100);

//

// value=myEncoder.read();

// Serial.println("...valoare inapoi...");

// Serial.println(value);

// myEncoder.write(0);

// delay(0);

//

// Serial.println("...Se opreste 1 sec...");

// digitalWrite(in1,LOW);

// digitalWrite(in2,LOW);

// value=myEncoder.read();

// Serial.println("...valoare la oprire...");

// Serial.println(value);

// myEncoder.write(0);

// delay(1000);

7
void count()

encoder_value++;

Prob 3 15 noiembrie
int Pwmpin = 9;

int Fchange = A0;

void setup()

Serial.begin(9600);

pinMode(Pwmpin, OUTPUT);

TCCR1A = _BV(COM1A1)|_BV(COM1B1);

TCCR1B = _BV(WGM13)|_BV(CS11);

void loop()

float freq = 0;

float count = 10000,countt=0,Pinput=0;

while(1)

ICR1=count;//frecventa variabila

countt = 16*count;

freq = int(16000000/countt);

OCR1A = int(count/2);

Serial.println("Pwm Freq= ");

Serial.println(freq);

8
count = 10000;

Pinput = analogRead(A0);

Pinput = (Pinput/0.0113);

count = count + Pinput;

if(count >= 100000)

count = 10000;

delay(1000);

Prob 4 22 noiembrie a
#include <Wire.h>

#include <Servo.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

Servo myservo;

Servo myservo1;

int pos = 0;

int pos1 = 0;

void setup() {

myservo.attach(9);

myservo1.attach(10);

Serial.begin(9600);

lcd.begin();

lcd.backlight();

9
}

void loop() {

for (pos = 0; pos <= 90; pos += 1) {

myservo.write(pos);

delay(15);

delay(50);

lcd.clear();

lcd.setCursor(0,1);

lcd.print("Val2:");

lcd.setCursor(7,1);

lcd.print(pos);

for (pos1 = 0; pos1 <= 90; pos1 += 1) {

myservo1.write(pos1);

delay(15);

delay(50);

lcd.clear();

lcd.print("Val1:");

lcd.setCursor(7,0);

lcd.print(pos1);

for (pos = 90; pos >= 0; pos -= 1) {

myservo.write(pos);

delay(15);

lcd.clear();

lcd.setCursor(0,1);

lcd.print("Val2:");

lcd.setCursor(7,1);

lcd.print(pos);

for (pos1 = 90; pos1 >= 0; pos1 -= 1) {

10
myservo1.write(pos1);

delay(15);

delay(50);

lcd.clear();

lcd.print("Val1:");

lcd.setCursor(7,0);

lcd.print(pos1);

Prob 5 22 noiembrie b
#include <Servo.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

Servo myservo;

Servo myservo1;

int pos = 0;

int pos1 = 0;

void setup()

myservo.attach(9);

myservo1.attach(10);

Serial.begin(9600);

lcd.begin();

lcd.backlight();

11
void loop() {

for (pos = 0; pos <= 180; pos += 1)

myservo.write(pos);

delay(15);

delay(500);

lcd.clear();

lcd.print("Valoarea este ");

lcd.setCursor(0,1);

lcd.print(pos1);

// for (pos1 = 20; pos1 <= 155; pos1 += 1)

// { Serial.println(pos1);

// myservo1.write(pos1);

// delay(15);

// }

// delay(500);

//

//

// for (pos = 180; pos >= 0; pos -= 1)

// {

// myservo.write(pos);

// delay(15);

// }

// delay(500);

//

// for (pos1 = 180; pos1 >= 0; pos1 -= 1)

// {

12
// myservo1.write(pos1);

// delay(15);

// }

// delay(500);

//

//

//

Prob 6 Senzor 1
#include <Encoder.h>

Encoder myEncoder(2,3);

float value;

int enA = 10;

int in1 = 9;

int in2 = 8;

void setup()

pinMode(enA,OUTPUT);

pinMode(in1,OUTPUT);

pinMode(in2,OUTPUT);

Serial.begin(9600);

void loop()

digitalWrite(enA,HIGH);

13
Serial.println("...inainte...");

digitalWrite(in1,HIGH);

digitalWrite(in2,LOW);

analogWrite(enA,200);

delay(100);

value = myEncoder.read();

Serial.println("...valoarea inainte...");

Serial.println(value);

myEncoder.write(0);

delay(100);

Serial.println("...inapoi...");

digitalWrite(in1,LOW);

digitalWrite(in2,HIGH);

digitalWrite(enA,HIGH);

analogWrite(enA,200);

delay(100);

value=myEncoder.read();

Serial.println("...valoare inapoi...");

Serial.println(value);

myEncoder.write(0);

delay(0);

Serial.println("...Se opreste 1 sec...");

digitalWrite(in1,LOW);

digitalWrite(in2,LOW);

value=myEncoder.read();

Serial.println("...valoare la oprire...");

Serial.println(value);

14
myEncoder.write(0);

delay(1000);

Prob 7 Senzor 2
const int echo = 11;

const int trig = 10;

#define enA 2

#define in1 3

#define in2 4

#define enB 5

#define in3 6

#define in4 7

float duration, s;

void setup() {

// put your setup code here, to run once:

pinMode(echo,INPUT);

pinMode(trig,OUTPUT);

pinMode(enB,OUTPUT);

pinMode(in3,OUTPUT);

pinMode(in4,OUTPUT);

pinMode(enA,OUTPUT);

pinMode(in1,OUTPUT);

pinMode(in2,OUTPUT);

Serial.begin(9600);

void loop() {

15
digitalWrite(enB,HIGH);

digitalWrite(in3,LOW);

digitalWrite(in4,HIGH);

digitalWrite(enA,HIGH);

digitalWrite(in1,LOW);

digitalWrite(in2,HIGH);

digitalWrite(trig,0);

delayMicroseconds(2);

digitalWrite(trig,1);

delayMicroseconds(10);

duration = pulseIn(echo,HIGH);

s = duration * 0.034/2;

Serial.print("Distanta: ");

Serial.println(s);

for(int i=0; i<=4; i++)

{ while (s < 10)

digitalWrite(trig,0);

delayMicroseconds(2);

digitalWrite(trig,1);

delayMicroseconds(10);

duration = pulseIn(echo,HIGH);

s = duration * 0.034/2;

Serial.print("Distanta: ");

Serial.println(s);

16
digitalWrite(in1,LOW);

digitalWrite(in2,LOW);

digitalWrite(in3,LOW);

digitalWrite(in4,LOW);

analogWrite(enB,255-40*i);

delay(200);}

delay(10);

digitalWrite(enB, HIGH);

for(int i=0; i<=4; i++)

{ while (s < 10)

digitalWrite(trig,0);

delayMicroseconds(2);

digitalWrite(trig,1);

delayMicroseconds(10);

duration = pulseIn(echo,HIGH);

s = duration * 0.034/2;

Serial.print("Distanta: ");

Serial.println(s);

digitalWrite(in1,LOW);

digitalWrite(in2,LOW);

digitalWrite(in3,LOW);

digitalWrite(in4,LOW);

analogWrite(enA,255-40*i);

17
delay(200);}

digitalWrite(enA, HIGH);

delay(10);

Prob 8 lab 9.1


#include <AutoDriver.h>

#include <dSPINConstants.h>

AutoDriver boardA(10, 6);

//parametrul pentru micropasire

byte stepMode=STEP_FS;

//parametrul pentru viteza maxima

float stepsPerSecond=50;

//parametrul pentru directie

byte dir=FWD;

//parametrul pentru run

byte dir1=REV;

float stepsPerSec=500;

void setup()

void configSyncPin(byte pinFunc, byte syncSteps);

void configStepMode(byte stepMode);

void setMaxSpeed(float stepsPerSecond);

void setMinSpeed(float stepsPerSecond);

void setFullSpeed(float stepsPerSecond);

void setAcc(float stepsPerSecondPerSecond);

void setDec(float stepsPerSecondPerSecond);

void setOCThreshold(byte threshold);

void setPWMFreq(int divisor, int multiplier);

void setSlewRate(int slewRate);

void setOCShutdown(int OCShutdown);

18
void setOscMode(int oscillatorMode);

void setVoltageComp(int vsCompMode);

void setSwitchMode(int switchMode);

void setAccKVAL(byte kvalInput);

void setDecKVAL(byte kvalInput);

void setRunKVAL(byte kvalInput);

void setHoldKVAL(byte kvalInput);

void setLoSpdOpt(boolean enable);

// de la Arduino............

void resetDev();

void busyCheck();

void run(byte dir, float stepsPerSec);

void move(byte dir, unsigned long numSteps);

void softStop();

void hardStop();

void softHiZ();

void hardHiZ();

long getPos();

void resetPos();

void setMark(long newMark);

void setPos(long newPos);

void goTo(long pos);

void goToDir(byte dir, long pos);

void goHome();

void stepClock(byte dir);

void goUntil(byte action, byte dir, float stepsPerSec);

void releaseSw(byte action, byte dir);

void setParam(byte param, unsigned long value);

unsigned long getParam(byte param);

dSPINConfig();

Serial.begin(9600);

19
Serial.println("Dati comanda de pornire");

boardA.resetDev();

// pentru începerea mișcării se introduce un caracter de la tastatură

void loop()

if (Serial.available() !=0)

Serial.println("A primit comanda");

Serial.read();

Serial.println("Incepe deplasare inainte");

boardA.configStepMode(STEP_FS);

boardA.setMaxSpeed(stepsPerSecond);

boardA.setFullSpeed(stepsPerSecond);

boardA.run(dir, stepsPerSec);

delay(1000);

void dSPINConfig(void)

boardA.configSyncPin(BUSY_PIN, 0);

boardA.configStepMode(STEP_FS);

boardA.setMaxSpeed(10000);

boardA.setFullSpeed(10000);

boardA.setAcc(10000);

boardA.setDec(10000);

boardA.setSlewRate(SR_530V_us);

boardA.setOCThreshold(OC_750mA);

boardA.setPWMFreq(PWM_DIV_2, PWM_MUL_2);

boardA.setOCShutdown(OC_SD_DISABLE);

boardA.setVoltageComp(VS_COMP_DISABLE);

20
boardA.setSwitchMode(SW_USER);

boardA.setOscMode(INT_16MHZ_OSCOUT_16MHZ);

boardA.setAccKVAL(255);

boardA.setDecKVAL(255);

boardA.setRunKVAL(255);

boardA.setHoldKVAL(32);

Prob 9 lab 9.2

#include <AutoDriver.h>

#include <dSPINConstants.h>

AutoDriver boardA(10, 6);

//parametrul pentru micropasire

byte stepMode=STEP_FS;

//parametrul pentru viteza maxima

float stepsPerSecond=50;

byte dir=FWD;

//parametrul pentru run

float stepsPerSec=500;

void dSPINConfig(void)

boardA.configSyncPin(BUSY_PIN, 0);

boardA.configStepMode(STEP_FS);

boardA.setMaxSpeed(10000);

boardA.setFullSpeed(10000);

boardA.setAcc(10000);

boardA.setDec(10000);

boardA.setSlewRate(SR_530V_us);

boardA.setOCThreshold(OC_750mA);

boardA.setPWMFreq(PWM_DIV_2, PWM_MUL_2);

21
boardA.setOCShutdown(OC_SD_DISABLE);

boardA.setVoltageComp(VS_COMP_DISABLE);

boardA.setSwitchMode(SW_USER);

boardA.setOscMode(INT_16MHZ_OSCOUT_16MHZ);

boardA.setAccKVAL(255);

boardA.setDecKVAL(255);

boardA.setRunKVAL(255);

boardA.setHoldKVAL(32);

void setup()

{ void configSyncPin(byte pinFunc, byte syncSteps);

void configStepMode(byte stepMode);

void setMaxSpeed(float stepsPerSecond);

void setMinSpeed(float stepsPerSecond);

void setFullSpeed(float stepsPerSecond);

void setAcc(float stepsPerSecondPerSecond);

void setDec(float stepsPerSecondPerSecond);

void setOCThreshold(byte threshold);

void setPWMFreq(int divisor, int multiplier);

void setSlewRate(int slewRate);

void setOCShutdown(int OCShutdown);

void setOscMode(int oscillatorMode);

void setVoltageComp(int vsCompMode);

void setSwitchMode(int switchMode);

void setAccKVAL(byte kvalInput);

void setDecKVAL(byte kvalInput);

void setRunKVAL(byte kvalInput);

void setHoldKVAL(byte kvalInput);

void setLoSpdOpt(boolean enable);

// de la Arduino............

22
void resetDev();

void busyCheck();

void run(byte dir, float stepsPerSec);

void move(byte dir, unsigned long numSteps);

void softStop();

void hardStop();

void softHiZ();

void hardHiZ();

long getPos();

void resetPos();

void setMark(long newMark);

void setPos(long newPos);

void goTo(long pos);

void goToDir(byte dir, long pos);

void goHome();

void stepClock(byte dir);

void goUntil(byte action, byte dir, float stepsPerSec);

void releaseSw(byte action, byte dir);

void setParam(byte param, unsigned long value);

unsigned long getParam(byte param);

dSPINConfig();

Serial.begin(9600);

Serial.println("Dati comanda de pornire");

boardA.resetDev();

// se introduce un caracter de la tastatura pentru a incepe

void loop()

if (Serial.available() !=0)

Serial.println("Citeste comanda");

23
Serial.read();

Serial.println("Incepe miscarea");

boardA.busyCheck();

boardA.configStepMode(STEP_FS);

boardA.setMaxSpeed(stepsPerSecond);

boardA.setFullSpeed(stepsPerSecond);

boardA.move(dir, 300);

delay(1000);

boardA.softStop();

delay(1000);

Serial.println("Dati comanda a doua secventa");

Prob 10 lab 9.3


#include <AutoDriver.h>

#include <dSPINConstants.h>

AutoDriver boardA(10, 6);

byte stepMode=STEP_FS;

//parametrul pentru viteza maxima

float stepsPerSecond=50;

//parametrul pentru directie

byte dir=FWD;

//parametrul pentru run

byte dir1=REV;

float stepsPerSec=500;

void dSPINConfig(void)

boardA.configSyncPin(BUSY_PIN, 0);

boardA.configStepMode(STEP_FS);

24
boardA.setMaxSpeed(10000);

boardA.setFullSpeed(10000);

boardA.setAcc(10000);

boardA.setDec(10000);

boardA.setSlewRate(SR_530V_us);

boardA.setOCThreshold(OC_750mA);

boardA.setPWMFreq(PWM_DIV_2, PWM_MUL_2);

boardA.setOCShutdown(OC_SD_DISABLE);

boardA.setVoltageComp(VS_COMP_DISABLE);

boardA.setSwitchMode(SW_USER);

boardA.setOscMode(INT_16MHZ_OSCOUT_16MHZ);

boardA.setAccKVAL(255);

boardA.setDecKVAL(255);

boardA.setRunKVAL(255);

boardA.setHoldKVAL(32);

void setup()

void configSyncPin(byte pinFunc, byte syncSteps);

void configStepMode(byte stepMode);

void setMaxSpeed(float stepsPerSecond);

void setMinSpeed(float stepsPerSecond);

void setFullSpeed(float stepsPerSecond);

void setAcc(float stepsPerSecondPerSecond);

void setDec(float stepsPerSecondPerSecond);

void setOCThreshold(byte threshold);

void setPWMFreq(int divisor, int multiplier);

void setSlewRate(int slewRate);

void setOCShutdown(int OCShutdown);

void setOscMode(int oscillatorMode);

25
void setVoltageComp(int vsCompMode);

void setSwitchMode(int switchMode);

void setAccKVAL(byte kvalInput);

void setDecKVAL(byte kvalInput);

void setRunKVAL(byte kvalInput);

void setHoldKVAL(byte kvalInput);

void setLoSpdOpt(boolean enable);

// de la Arduino............

void resetDev();

void busyCheck();

void run(byte dir, float stepsPerSec);

void move(byte dir, unsigned long numSteps);

void softStop();

void hardStop();

void softHiZ();

void hardHiZ();

long getPos();

void resetPos();

void setMark(long newMark);

void setPos(long newPos);

void goTo(long pos);

void goToDir(byte dir, long pos);

void goHome();

void stepClock(byte dir);

void goUntil(byte action, byte dir, float stepsPerSec);

void releaseSw(byte action, byte dir);

void setParam(byte param, unsigned long value);

unsigned long getParam(byte param);

dSPINConfig();

Serial.begin(9600);

Serial.println("Dati comanda de pornire");

26
boardA.resetDev();

// se introduce u caracter de la tastatura

void loop()

if (Serial.available() !=0)

Serial.println("Citeste comanda");

Serial.read();

Serial.println("Incepe miscarea");

boardA.busyCheck();

boardA.configStepMode(STEP_FS);

boardA.setMaxSpeed(stepsPerSecond);

boardA.setFullSpeed(stepsPerSecond);

boardA.move(dir, 300);

delay(1000);

boardA.softHiZ();

delay(1000);

Serial.println("Dati comanda al doua secventa");

/////////FUNCTIA DSPIN RAMINE LA FEL

Prob 11 lab 9.4


#include <AutoDriver.h>

#include <dSPINConstants.h>

AutoDriver boardA(10, 6);

byte stepMode=STEP_FS;

//parametrul pentru viteza maxima

float stepsPerSecond=45;

27
//parametrul pentru directie

byte dir=FWD;

//parametrul pentru run

byte dir1=REV;

float stepsPerSec=45;

void dSPINConfig(void)

boardA.configSyncPin(BUSY_PIN, 0);

boardA.configStepMode(STEP_FS);

boardA.setMaxSpeed(10000);

boardA.setFullSpeed(10000);

boardA.setAcc(10000);

boardA.setDec(10000);

boardA.setSlewRate(SR_530V_us);

boardA.setOCThreshold(OC_750mA);

boardA.setPWMFreq(PWM_DIV_2, PWM_MUL_2);

boardA.setOCShutdown(OC_SD_DISABLE);

boardA.setVoltageComp(VS_COMP_DISABLE);

boardA.setSwitchMode(SW_USER);

boardA.setOscMode(INT_16MHZ_OSCOUT_16MHZ);

boardA.setAccKVAL(255);

boardA.setDecKVAL(255);

boardA.setRunKVAL(255);

boardA.setHoldKVAL(32);

void setup()

void configSyncPin(byte pinFunc, byte syncSteps);

void configStepMode(byte stepMode);

28
void setMaxSpeed(float stepsPerSecond);

void setMinSpeed(float stepsPerSecond);

void setFullSpeed(float stepsPerSecond);

void setAcc(float stepsPerSecondPerSecond);

void setDec(float stepsPerSecondPerSecond);

void setOCThreshold(byte threshold);

void setPWMFreq(int divisor, int multiplier);

void setSlewRate(int slewRate);

void setOCShutdown(int OCShutdown);

void setOscMode(int oscillatorMode);

void setVoltageComp(int vsCompMode);

void setSwitchMode(int switchMode);

void setAccKVAL(byte kvalInput);

void setDecKVAL(byte kvalInput);

void setRunKVAL(byte kvalInput);

void setHoldKVAL(byte kvalInput);

void setLoSpdOpt(boolean enable);

// de la Arduino............

void resetDev();

void busyCheck();

void run(byte dir, float stepsPerSec);

void move(byte dir, unsigned long numSteps);

void softStop();

void hardStop();

void softHiZ();

void hardHiZ();

long getPos();

void resetPos();

void setMark(long newMark);

void setPos(long newPos);

void goTo(long pos);

29
void goToDir(byte dir, long pos);

void goHome();

void stepClock(byte dir);

void goUntil(byte action, byte dir, float stepsPerSec);

void releaseSw(byte action, byte dir);

void setParam(byte param, unsigned long value);

unsigned long getParam(byte param);

dSPINConfig();

Serial.begin(9600);

Serial.println("Dati comanda de pornire");

boardA.resetDev();

void loop()

{ if (Serial.available() !=0)

{ Serial.println("Citeste comanda");

Serial.read();

Serial.println("Incepe miscarea");

boardA.busyCheck();

boardA.configStepMode(STEP_FS);

boardA.setMaxSpeed(stepsPerSecond);

boardA.setFullSpeed(stepsPerSecond);

boardA.move(dir, 300);

delay(1000);

boardA.softStop();

delay(1000);

Serial.println("Miscare in sens invers");

boardA.move(dir1,500);

delay(1000);

boardA.softHiZ();

delay(1000);

30
Serial.println("Dati comanda a doua secventa");

Prob 12 lab 9.5


#include <AutoDriver.h>

#include <dSPINConstants.h>

AutoDriver boardA(10, 6);

//parametrul pentru micropasire

byte stepMode=STEP_FS;

//parametrul pentru viteza maxima

float stepsPerSecond=50;

byte dir=FWD;

byte dir1=REV;

//parametrul pentru run

float stepsPerSec=50;

void setup()

void configSyncPin(byte pinFunc, byte syncSteps);

void configStepMode(byte stepMode);

void setMaxSpeed(float stepsPerSecond);

void setMinSpeed(float stepsPerSecond);

void setFullSpeed(float stepsPerSecond);

void setAcc(float stepsPerSecondPerSecond);

void setDec(float stepsPerSecondPerSecond);

void setOCThreshold(byte threshold);

void setPWMFreq(int divisor, int multiplier);

void setSlewRate(int slewRate);

void setOCShutdown(int OCShutdown);

void setOscMode(int oscillatorMode);

void setVoltageComp(int vsCompMode);

void setSwitchMode(int switchMode);

31
void setAccKVAL(byte kvalInput);

void setDecKVAL(byte kvalInput);

void setRunKVAL(byte kvalInput);

void setHoldKVAL(byte kvalInput);

void setLoSpdOpt(boolean enable);

// de la Arduino............

void resetDev();

void busyCheck();

void run(byte dir, float stepsPerSec);

void move(byte dir, unsigned long numSteps);

void softStop();

void hardStop();

void softHiZ();

void hardHiZ();

long getPos();

void resetPos();

void setMark(long newMark);

void setPos(long newPos);

void goTo(long pos);

void goToDir(byte dir, long pos);

void goHome();

void stepClock(byte dir);

void goUntil(byte action, byte dir, float stepsPerSec);

void releaseSw(byte action, byte dir);

void setParam(byte param, unsigned long value);

unsigned long getParam(byte param);

dSPINConfig();

Serial.begin(9600);

Serial.println("Dati comanda de pornire");

boardA.resetDev();

32
// se introduce un caracter de la tastatura

void loop()

if (Serial.available() !=0)

Serial.println("Citeste comanda");

Serial.read();

Serial.println("Incepe miscarea");

boardA.busyCheck();

boardA.configStepMode(STEP_FS);

boardA.setMaxSpeed(stepsPerSecond);

boardA.setFullSpeed(stepsPerSecond);

boardA.move(dir, 300);

delay(1000);

boardA.softStop();

delay(1000);

Serial.println("Miscare in sens invers");

boardA.move(dir1,500);

delay(1000);

boardA.softHiZ();

delay(1000);

Serial.println("functioneaza go to la o directie");

boardA.goToDir(FWD,500);

delay(1000);

Serial.println("GATA");

Serial.println("Dati comanda a doua secventa");

boardA.resetDev();

void dSPINConfig(void)

33
boardA.configSyncPin(BUSY_PIN, 0);// BUSY pin low during operations;

// second paramter ignored.

boardA.configStepMode(STEP_FS); // 0 microsteps per step

boardA.setMaxSpeed(10000); // 10000 steps/s max

boardA.setFullSpeed(10000); // microstep below 10000 steps/s

boardA.setAcc(10000); // accelerate at 10000 steps/s/s

boardA.setDec(10000);

boardA.setSlewRate(SR_530V_us); // Upping the edge speed increases torque.

boardA.setOCThreshold(OC_750mA); // OC threshold 750mA

boardA.setPWMFreq(PWM_DIV_2, PWM_MUL_2); // 31.25kHz PWM freq

boardA.setOCShutdown(OC_SD_DISABLE); // don't shutdown on OC

boardA.setVoltageComp(VS_COMP_DISABLE); // don't compensate for motor V

boardA.setSwitchMode(SW_USER); // Switch is not hard stop

boardA.setOscMode(INT_16MHZ_OSCOUT_16MHZ); // for boardA, we want 16MHz

// internal osc, 16MHz out. boardB and

// boardC will be the same in all respects

// but this, as they will bring in and

// output the clock to keep them

// all in phase.

boardA.setAccKVAL(255); // We'll tinker with these later, if needed.

boardA.setDecKVAL(255);

boardA.setRunKVAL(255);

boardA.setHoldKVAL(32); // This controls the holding current; keep it low.

Prob 13 lab 9.6


#include <AutoDriver.h>

#include <dSPINConstants.h>

AutoDriver boardA(10, 6);

//parametrul pentru micropasire

byte stepMode=STEP_FS;

34
//parametrul pentru viteza maxima

float stepsPerSecond=50;

byte dir=FWD;

byte dir1=REV;

//parametrul pentru run

float stepsPerSec=50;

unsigned long u;

void setup()

void configSyncPin(byte pinFunc, byte syncSteps);

void configStepMode(byte stepMode);

void setMaxSpeed(float stepsPerSecond);

void setMinSpeed(float stepsPerSecond);

void setFullSpeed(float stepsPerSecond);

void setAcc(float stepsPerSecondPerSecond);

void setDec(float stepsPerSecondPerSecond);

void setOCThreshold(byte threshold);

void setPWMFreq(int divisor, int multiplier);

void setSlewRate(int slewRate);

void setOCShutdown(int OCShutdown);

void setOscMode(int oscillatorMode);

void setVoltageComp(int vsCompMode);

void setSwitchMode(int switchMode);

void setAccKVAL(byte kvalInput);

void setDecKVAL(byte kvalInput);

void setRunKVAL(byte kvalInput);

void setHoldKVAL(byte kvalInput);

void setLoSpdOpt(boolean enable);

// de la Arduino............

void resetDev();

void busyCheck();

35
void run(byte dir, float stepsPerSec);

void move(byte dir, unsigned long numSteps);

void softStop();

void hardStop();

void softHiZ();

void hardHiZ();

long getPos();

void resetPos();

void setMark(long newMark);

void setPos(long newPos);

void goTo(long pos);

void goToDir(byte dir, long pos);

void goHome();

void stepClock(byte dir);

void goUntil(byte action, byte dir, float stepsPerSec);

void releaseSw(byte action, byte dir);

void setParam(byte param, unsigned long value);

unsigned long getParam(byte param);

dSPINConfig();

Serial.begin(9600);

Serial.println("Dati comanda de pornire");

boardA.resetDev();

// se introduce un caracter de la tastatură

void loop()

if (Serial.available() !=0)

Serial.println("Citeste comanda");

Serial.read();

Serial.println("Incepe miscarea");

36
boardA.busyCheck();

boardA.configStepMode(STEP_FS);

boardA.setMaxSpeed(stepsPerSecond);

boardA.setFullSpeed(stepsPerSecond);

boardA.move(dir, 200);

delay(1000);

boardA.softStop();

delay(1000);

Serial.println("Miscare in sens invers");

boardA.move(dir1,200);

delay(1000);

boardA.softHiZ();

delay(1000);

Serial.println("functioneaza go to la o directie");

boardA.goToDir(FWD,100);

delay(1000);

Serial.println("GATA");

Serial.println("Se scriu parametrii");

u=boardA.getParam(ABS_POS);

Serial.println(u);

delay(1000);

boardA.resetDev();

delay(1000);

Serial.println("Dati comanda a doua secventa");

void dSPINConfig(void)

boardA.configSyncPin(BUSY_PIN, 0);// BUSY pin low during operations;

// second paramter ignored.

boardA.configStepMode(STEP_FS); // 0 microsteps per step

37
boardA.setMaxSpeed(10000); // 10000 steps/s max

boardA.setFullSpeed(10000); // microstep below 10000 steps/s

boardA.setAcc(10000); // accelerate at 10000 steps/s/s

boardA.setDec(10000);

boardA.setSlewRate(SR_530V_us); // Upping the edge speed increases torque.

boardA.setOCThreshold(OC_750mA); // OC threshold 750mA

boardA.setPWMFreq(PWM_DIV_2, PWM_MUL_2); // 31.25kHz PWM freq

boardA.setOCShutdown(OC_SD_DISABLE); // don't shutdown on OC

boardA.setVoltageComp(VS_COMP_DISABLE); // don't compensate for motor V

boardA.setSwitchMode(SW_USER); // Switch is not hard stop

boardA.setOscMode(INT_16MHZ_OSCOUT_16MHZ); // for boardA, we want 16MHz

// internal osc, 16MHz out. boardB and

// boardC will be the same in all respects

// but this, as they will bring in and

// output the clock to keep them

// all in phase.

boardA.setAccKVAL(255); // We'll tinker with these later, if needed.

boardA.setDecKVAL(255);

boardA.setRunKVAL(255);

boardA.setHoldKVAL(32); // This controls the holding current; keep it low.

Prob 14 lab 12.1


#include <AccelStepper.h>

AccelStepper stepper(AccelStepper::DRIVER,9,8);

int pos = 1467;

void setup()

stepper.setMaxSpeed(1000);

stepper.setAcceleration(200);

38
}

void loop()

if(stepper.distanceToGo()==0)

delay(25);

pos=-pos;

stepper.moveTo(pos);

stepper.run();

Prob 15 lab 12.2


int Distance = 0;

void setup()

pinMode(8,OUTPUT);

pinMode(9,OUTPUT);

digitalWrite(8,LOW);

digitalWrite(8,LOW);

void loop()

digitalWrite(9,HIGH);

delayMicroseconds(350);

digitalWrite(9,LOW);

delayMicroseconds(350);

Distance = Distance+1;

39
if(Distance==1000)

if(digitalRead(8)==LOW)

digitalWrite(8,HIGH);

else

digitalWrite(8,LOW);

Distance=0;

delay(150);

Prob 16 17.10 Motoare


//int encoder_value;

int enA=10;

int in1 = 9;

int in2 = 8;

int in3 = 7;

//int in_encoder=2;

//void count(void);

void setup() {

pinMode(enA,OUTPUT);

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

// pinMode(in_encoder,INPUT);

Serial.begin(9600);

40
// attachIntrerrupt(2,count,FALLING);

// encoder_value=0;

void loop() {

digitalWrite(enA,HIGH);

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

// for(int i=0; i<5; i++){

// analogWrite(enA,228-10*i);

// delay(100);

// encoder_value=analogRead(in_encoder);

// delay(100);

// }

// encoder_value=0;

//void count(){

// encoder_value++;

//}

Prob 17 25.10 Senzor proxi


int enA=10;

int enB=11;

int in1=9;

int in3=7;

int in2=8;

int in4=6;

int Trig=4;

int Echo=2;

41
long duration;

int distance;

void count(void);

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2,OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4,OUTPUT);

pinMode(Trig,OUTPUT);

pinMode(Echo,INPUT);

Serial.begin(9600);

void loop() {

digitalWrite(enA,LOW);

digitalWrite(enB,LOW);

digitalWrite(in1,HIGH);

digitalWrite(in2,LOW);

digitalWrite(in3,HIGH);

digitalWrite(in4,LOW);

digitalWrite(Trig, LOW);

delayMicroseconds(2);

digitalWrite(Trig, HIGH);

42
duration = pulseIn(Echo, HIGH);

distance = duration*0.034/2;

Serial.println(distance);

// digitalWrite(enA,HIGH);

// digitalWrite(enB,HIGH);

for (int i = 0 ; i <5; i++){

if(distance > 10){

digitalWrite(enA,HIGH);

analogWrite(enB,255-80*i);

delay(100);

Prob 18

43

S-ar putea să vă placă și