Driver_Moteur_DC première impression viable
YATA :)
0
Modification_du_corps/README
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/PID_AutoTune_v0/AutoTune_Example.pde
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/PID_AutoTune_v0/AutoTune_Example/AutoTune_Example.pde
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/PID_AutoTune_v0/AutoTune_Example/PID_AutoTune_v0.cpp
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/PID_AutoTune_v0/AutoTune_Example/PID_AutoTune_v0.h
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/PID_AutoTune_v0/AutoTune_Example/PID_v1.cpp
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/PID_AutoTune_v0/AutoTune_Example/PID_v1.h
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/PID_AutoTune_v0/Examples/AutoTune_Example/AutoTune_Example.pde
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/PID_AutoTune_v0/PID_AutoTune_v0.cpp
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/PID_AutoTune_v0/PID_AutoTune_v0.h
Normal file → Executable file
0
Moteur DC/Arduino-PID-AutoTune-Library/README.txt
Normal file → Executable file
0
Moteur DC/DC_servo/DC_1servo.7z
Normal file → Executable file
0
Moteur DC/DC_servo/DC_1servo/DC_1servo.ino
Normal file → Executable file
0
Moteur DC/DC_servo/DC_1servo/PID_v1.cpp
Normal file → Executable file
0
Moteur DC/DC_servo/DC_1servo/PID_v1.h
Normal file → Executable file
0
Moteur DC/ServoStrap/Arduino_stepper_motor_emulator_v1.0.0.pde
Normal file → Executable file
0
Moteur DC/ServoStrap/LICENSE
Normal file → Executable file
0
Moteur DC/ServoStrap/Driver_printer/Driver_printer.ino → Moteur DC/ServoStrap/OLD/Driver_printer/Driver_printer.ino
Normal file → Executable file
0
Moteur DC/ServoStrap/README.md
Normal file → Executable file
0
Moteur DC/ServoStrap/STM32_olimexino_stepper_motor_emulator
Normal file → Executable file
0
Moteur DC/ServoStrap/ServoStrapPortManipulationLD293D_1_0/ServoStrapPortManipulationLD293D_1_0.ino
Normal file → Executable file
@@ -0,0 +1,229 @@
|
|||||||
|
#include <digitalWriteFast.h>
|
||||||
|
//this is to use DWF library, it will increase the speed of digitalRead/Write command
|
||||||
|
//used in the interrupt function doEncoderMotor0, but may be used everywhere.
|
||||||
|
/*
|
||||||
|
https://github.com/danithebest91/ServoStrap
|
||||||
|
i have made this code for the LMD18245 motor controller,
|
||||||
|
i have merged the pid code of Josh Kopel
|
||||||
|
whith the code of makerbot servo-controller board,
|
||||||
|
you can use this code on the some board changing some values.
|
||||||
|
Daniele Poddighe
|
||||||
|
external ardware require a quadrature encoder, timing slit strip and a dc motor,
|
||||||
|
all you can find inside an old printer, i have took it from canon and hp printers(psc1510)
|
||||||
|
|
||||||
|
for motor controll you can choose different type of H-bridge, i have used LMD18245,
|
||||||
|
you can order 3 of it on ti.com sample request, the hardware needed is explained on the datasheet but i'm drowing
|
||||||
|
the schematic and PCB layout on eagle.
|
||||||
|
|
||||||
|
|
||||||
|
read a rotary encoder with interrupts
|
||||||
|
Encoder hooked up with common to GROUND,
|
||||||
|
encoder0PinA to pin 2, encoder0PinB to pin 4 (or pin 3 see below)
|
||||||
|
it doesn't matter which encoder pin you use for A or B
|
||||||
|
|
||||||
|
is possible to change PID costants by sending on serial interfaces the values separated by ',' in this order: KP,KD,KI
|
||||||
|
example: 5.2,3.1,0 so we have KP=5.2 KD=3.1 KI=0 is only for testing purposes, but i will leave this function with eeprom storage
|
||||||
|
|
||||||
|
This code use Port manipulation :
|
||||||
|
Port registers allow for lower-level and faster manipulation of the i/o pins of the microcontroller on an Arduino board. The chips used on the Arduino board
|
||||||
|
(the ATmega8 and ATmega168) have three ports:
|
||||||
|
B (digital pin 8 to 13)
|
||||||
|
C (analog input pins)
|
||||||
|
D (digital pins 0 to 7)
|
||||||
|
https://www.arduino.cc/en/Reference/PortManipulation
|
||||||
|
|
||||||
|
https://www.arduino.cc/en/Hacking/PinMapping
|
||||||
|
https://www.arduino.cc/en/Hacking/PinMapping168
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define encoder0PinA 2 // PD2 (INT0) You can't modify port mapping here because this code use Port manipulation (I2)
|
||||||
|
#define encoder0PinB 8 // PB0; (I8)
|
||||||
|
|
||||||
|
#define MotorIN1 5 //(I5) IN1
|
||||||
|
#define MotorIN2 6 //(I6) IN2
|
||||||
|
|
||||||
|
//from ramps 1.4 stepper driver
|
||||||
|
#define STEP_PIN 3 //PD3 (INT1) (I3)
|
||||||
|
#define DIR_PIN 14 //PC0; (A0)
|
||||||
|
#define X_MIN 4 //(4)
|
||||||
|
|
||||||
|
volatile long encoder0Pos = 0;
|
||||||
|
|
||||||
|
long target = 0;
|
||||||
|
long target1 = 0;
|
||||||
|
int StartRoutine=0;
|
||||||
|
//correction = Kp * error + Kd * (error - prevError) + kI * (sum of errors)
|
||||||
|
//PID controller constants
|
||||||
|
float KP = 2.25 ; //position multiplier (gain) 2.25
|
||||||
|
float KI = 0.25; // Intergral multiplier (gain) .25
|
||||||
|
float KD = 1.0; // derivative multiplier (gain) 1.0
|
||||||
|
|
||||||
|
int lastError = 0;
|
||||||
|
int sumError = 0;
|
||||||
|
|
||||||
|
//Integral term min/max (random value and not yet tested/verified)
|
||||||
|
int iMax = 100;
|
||||||
|
int iMin = 0;
|
||||||
|
|
||||||
|
long previousTarget = 0;
|
||||||
|
long previousMillis = 0; // will store last time LED was updated
|
||||||
|
long interval = 5; // interval at which to blink (milliseconds)
|
||||||
|
|
||||||
|
//for motor control ramps 1.4
|
||||||
|
bool newStep = false;
|
||||||
|
bool oldStep = false;
|
||||||
|
bool dir = false;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
pinModeFast(2, INPUT);
|
||||||
|
pinModeFast(encoder0PinA, INPUT);
|
||||||
|
pinModeFast(encoder0PinB, INPUT);
|
||||||
|
pinModeFast(X_MIN, INPUT);
|
||||||
|
|
||||||
|
|
||||||
|
pinModeFast(MotorIN1, OUTPUT);
|
||||||
|
pinModeFast(MotorIN2, OUTPUT);
|
||||||
|
|
||||||
|
//ramps 1.4 motor control
|
||||||
|
pinModeFast(STEP_PIN, INPUT);
|
||||||
|
pinModeFast(DIR_PIN, INPUT);
|
||||||
|
|
||||||
|
attachInterrupt(0, doEncoderMotor0, CHANGE); // encoder pin on interrupt 0 - pin 2
|
||||||
|
attachInterrupt(1, countStep, RISING); //on pin 3
|
||||||
|
|
||||||
|
Serial.begin (115200);
|
||||||
|
Serial.println("start"); // a personal quirk
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(){
|
||||||
|
|
||||||
|
while (Serial.available() > 0) {
|
||||||
|
KP = Serial.parseFloat();
|
||||||
|
KD = Serial.parseFloat();
|
||||||
|
KI = Serial.parseFloat();
|
||||||
|
|
||||||
|
|
||||||
|
Serial.println(KP);
|
||||||
|
Serial.println(KD);
|
||||||
|
Serial.println(KI);
|
||||||
|
}
|
||||||
|
Fstart();
|
||||||
|
if(millis() - previousTarget > 1000){ //enable this code only for test purposes because it loss a lot of time
|
||||||
|
|
||||||
|
if (X_MIN == LOW) Serial.print("LOW");
|
||||||
|
else Serial.print("HIGH");
|
||||||
|
Serial.print(',');
|
||||||
|
Serial.print(encoder0Pos);
|
||||||
|
Serial.print(',');
|
||||||
|
Serial.println(target1);
|
||||||
|
previousTarget=millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
target = target1;
|
||||||
|
docalc();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Fstart(){
|
||||||
|
|
||||||
|
if (StartRoutine == 0)
|
||||||
|
{
|
||||||
|
digitalWrite ( MotorIN1 , LOW );
|
||||||
|
analogWrite ( MotorIN2, 200 );
|
||||||
|
delay(2000);
|
||||||
|
digitalWrite ( MotorIN2 , LOW );
|
||||||
|
analogWrite ( MotorIN1, 255 );
|
||||||
|
delay(200);
|
||||||
|
digitalWrite ( MotorIN1, LOW );
|
||||||
|
analogWrite ( MotorIN2, 255 );
|
||||||
|
delay(180);
|
||||||
|
digitalWrite ( MotorIN2, LOW );
|
||||||
|
analogWrite ( MotorIN1, 255 );
|
||||||
|
delay(100);
|
||||||
|
digitalWrite ( MotorIN1, LOW );
|
||||||
|
analogWrite ( MotorIN2, 255 );
|
||||||
|
delay(90);
|
||||||
|
digitalWrite ( MotorIN2, LOW );
|
||||||
|
analogWrite ( MotorIN1, 255 );
|
||||||
|
delay(100);
|
||||||
|
digitalWrite ( MotorIN1, LOW );
|
||||||
|
analogWrite ( MotorIN2, 200 );
|
||||||
|
delay(2000);
|
||||||
|
|
||||||
|
|
||||||
|
StartRoutine = 1;
|
||||||
|
encoder0Pos=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void docalc() {
|
||||||
|
|
||||||
|
if (millis() - previousMillis > interval)
|
||||||
|
{
|
||||||
|
previousMillis = millis();
|
||||||
|
long error = encoder0Pos - target ; // find the error term of current position - target
|
||||||
|
|
||||||
|
//generalized PID formula
|
||||||
|
//correction = Kp * error + Kd * (error - prevError) + kI * (sum of errors)
|
||||||
|
long motorspeed = KP * error + KD * (error - lastError) +KI * (sumError);
|
||||||
|
|
||||||
|
lastError = error;
|
||||||
|
sumError += error;
|
||||||
|
|
||||||
|
//scale the sum for the integral term
|
||||||
|
if(sumError > iMax) {
|
||||||
|
sumError = iMax;
|
||||||
|
} else if(sumError < iMin){
|
||||||
|
sumError = iMin;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(motorspeed > 0){
|
||||||
|
if( motorspeed >= 255) motorspeed=255;
|
||||||
|
digitalWrite ( MotorIN1 , LOW );
|
||||||
|
analogWrite ( MotorIN2, motorspeed );
|
||||||
|
}
|
||||||
|
if(motorspeed < 0){
|
||||||
|
motorspeed = -1 * motorspeed;
|
||||||
|
if( motorspeed >= 255) motorspeed=255;
|
||||||
|
digitalWrite ( MotorIN2 , LOW );
|
||||||
|
analogWrite ( MotorIN1, motorspeed );
|
||||||
|
//digitalWrite ( MotorIN1 , HIGH );
|
||||||
|
//analogWrite ( MotorIN2, 255 - motorspeed );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void doEncoderMotor0(){
|
||||||
|
//if (((PIND&B0000100)>>2) == HIGH) { // found a low-to-high on channel A; if(digitalRead(encoderPinA)==HIGH){.... read PD2 (I2)
|
||||||
|
if(digitalRead(encoder0PinA)==HIGH){
|
||||||
|
|
||||||
|
if ((PINB&B0000001) == LOW) { // check channel B to see which way; if(digitalRead(encoderPinB)==LOW){.... read PB0 (I8)
|
||||||
|
// encoder is turning
|
||||||
|
encoder0Pos-- ; // CCW
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
encoder0Pos++ ; // CW
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // found a high-to-low on channel A
|
||||||
|
{
|
||||||
|
if ((PINB&B0000001) == LOW) { // check channel B to see which way; if(digitalRead(encoderPinB)==LOW){.... read PB0 (I8)
|
||||||
|
// encoder is turning
|
||||||
|
encoder0Pos++ ; // CW
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
encoder0Pos-- ; // CCW
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void countStep(){
|
||||||
|
//dir=digitalRead(DIR_PIN)==HIGH;
|
||||||
|
dir = (PINC&B0000001); // dir=digitalRead(dir_pin) read PC0, 14 digital;
|
||||||
|
//here will be (PINB&B0000001) to not use shift in the stable version
|
||||||
|
if (dir) target1++;
|
||||||
|
else target1--;
|
||||||
|
}
|
||||||
@@ -0,0 +1,229 @@
|
|||||||
|
#include <digitalWriteFast.h>
|
||||||
|
//this is to use DWF library, it will increase the speed of digitalRead/Write command
|
||||||
|
//used in the interrupt function doEncoderMotor0, but may be used everywhere.
|
||||||
|
/*
|
||||||
|
https://github.com/danithebest91/ServoStrap
|
||||||
|
i have made this code for the LMD18245 motor controller,
|
||||||
|
i have merged the pid code of Josh Kopel
|
||||||
|
whith the code of makerbot servo-controller board,
|
||||||
|
you can use this code on the some board changing some values.
|
||||||
|
Daniele Poddighe
|
||||||
|
external ardware require a quadrature encoder, timing slit strip and a dc motor,
|
||||||
|
all you can find inside an old printer, i have took it from canon and hp printers(psc1510)
|
||||||
|
|
||||||
|
for motor controll you can choose different type of H-bridge, i have used LMD18245,
|
||||||
|
you can order 3 of it on ti.com sample request, the hardware needed is explained on the datasheet but i'm drowing
|
||||||
|
the schematic and PCB layout on eagle.
|
||||||
|
|
||||||
|
|
||||||
|
read a rotary encoder with interrupts
|
||||||
|
Encoder hooked up with common to GROUND,
|
||||||
|
encoder0PinA to pin 2, encoder0PinB to pin 4 (or pin 3 see below)
|
||||||
|
it doesn't matter which encoder pin you use for A or B
|
||||||
|
|
||||||
|
is possible to change PID costants by sending on serial interfaces the values separated by ',' in this order: KP,KD,KI
|
||||||
|
example: 5.2,3.1,0 so we have KP=5.2 KD=3.1 KI=0 is only for testing purposes, but i will leave this function with eeprom storage
|
||||||
|
|
||||||
|
This code use Port manipulation :
|
||||||
|
Port registers allow for lower-level and faster manipulation of the i/o pins of the microcontroller on an Arduino board. The chips used on the Arduino board
|
||||||
|
(the ATmega8 and ATmega168) have three ports:
|
||||||
|
B (digital pin 8 to 13)
|
||||||
|
C (analog input pins)
|
||||||
|
D (digital pins 0 to 7)
|
||||||
|
https://www.arduino.cc/en/Reference/PortManipulation
|
||||||
|
|
||||||
|
https://www.arduino.cc/en/Hacking/PinMapping
|
||||||
|
https://www.arduino.cc/en/Hacking/PinMapping168
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define encoder0PinA 2 // PD2 (INT0) You can't modify port mapping here because this code use Port manipulation (I2)
|
||||||
|
#define encoder0PinB 8 // PB0; (I8)
|
||||||
|
|
||||||
|
#define MotorIN1 5 //(I5) IN1
|
||||||
|
#define MotorIN2 6 //(I6) IN2
|
||||||
|
|
||||||
|
//from ramps 1.4 stepper driver
|
||||||
|
#define STEP_PIN 3 //PD3 (INT1) (I3)
|
||||||
|
#define DIR_PIN 14 //PC0; (A0)
|
||||||
|
#define X_MIN 4 //(4)
|
||||||
|
|
||||||
|
volatile long encoder0Pos = 0;
|
||||||
|
|
||||||
|
long target = 0;
|
||||||
|
long target1 = 0;
|
||||||
|
int StartRoutine=0;
|
||||||
|
//correction = Kp * error + Kd * (error - prevError) + kI * (sum of errors)
|
||||||
|
//PID controller constants
|
||||||
|
float KP = 5 ; //position multiplier (gain) 2.25
|
||||||
|
float KI = 0.1; // Intergral multiplier (gain) .25
|
||||||
|
float KD = 2.0; // derivative multiplier (gain) 1.0
|
||||||
|
|
||||||
|
int lastError = 0;
|
||||||
|
int sumError = 0;
|
||||||
|
|
||||||
|
//Integral term min/max (random value and not yet tested/verified)
|
||||||
|
int iMax = 100;
|
||||||
|
int iMin = 0;
|
||||||
|
|
||||||
|
long previousTarget = 0;
|
||||||
|
long previousMillis = 0; // will store last time LED was updated
|
||||||
|
long interval = 5; // interval at which to blink (milliseconds)
|
||||||
|
|
||||||
|
//for motor control ramps 1.4
|
||||||
|
bool newStep = false;
|
||||||
|
bool oldStep = false;
|
||||||
|
bool dir = false;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
pinModeFast(2, INPUT);
|
||||||
|
pinModeFast(encoder0PinA, INPUT);
|
||||||
|
pinModeFast(encoder0PinB, INPUT);
|
||||||
|
pinModeFast(X_MIN, INPUT);
|
||||||
|
|
||||||
|
|
||||||
|
pinModeFast(MotorIN1, OUTPUT);
|
||||||
|
pinModeFast(MotorIN2, OUTPUT);
|
||||||
|
|
||||||
|
//ramps 1.4 motor control
|
||||||
|
pinModeFast(STEP_PIN, INPUT);
|
||||||
|
pinModeFast(DIR_PIN, INPUT);
|
||||||
|
|
||||||
|
attachInterrupt(0, doEncoderMotor0, CHANGE); // encoder pin on interrupt 0 - pin 2
|
||||||
|
attachInterrupt(1, countStep, RISING); //on pin 3
|
||||||
|
|
||||||
|
Serial.begin (115200);
|
||||||
|
Serial.println("start"); // a personal quirk
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(){
|
||||||
|
|
||||||
|
while (Serial.available() > 0) {
|
||||||
|
KP = Serial.parseFloat();
|
||||||
|
KD = Serial.parseFloat();
|
||||||
|
KI = Serial.parseFloat();
|
||||||
|
|
||||||
|
|
||||||
|
Serial.println(KP);
|
||||||
|
Serial.println(KD);
|
||||||
|
Serial.println(KI);
|
||||||
|
}
|
||||||
|
Fstart();
|
||||||
|
if(millis() - previousTarget > 1000){ //enable this code only for test purposes because it loss a lot of time
|
||||||
|
|
||||||
|
// if (X_MIN == LOW) Serial.print("LOW");
|
||||||
|
// else Serial.print("HIGH");
|
||||||
|
// Serial.print(',');
|
||||||
|
Serial.print(encoder0Pos);
|
||||||
|
Serial.print(',');
|
||||||
|
Serial.println(target1);
|
||||||
|
previousTarget=millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
target = target1;
|
||||||
|
docalc();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Fstart(){
|
||||||
|
|
||||||
|
if (StartRoutine == 0)
|
||||||
|
{
|
||||||
|
digitalWrite ( MotorIN1 , LOW );
|
||||||
|
analogWrite ( MotorIN2, 200 );
|
||||||
|
delay(2000);
|
||||||
|
digitalWrite ( MotorIN2 , LOW );
|
||||||
|
analogWrite ( MotorIN1, 255 );
|
||||||
|
delay(200);
|
||||||
|
digitalWrite ( MotorIN1, LOW );
|
||||||
|
analogWrite ( MotorIN2, 255 );
|
||||||
|
delay(180);
|
||||||
|
digitalWrite ( MotorIN2, LOW );
|
||||||
|
analogWrite ( MotorIN1, 255 );
|
||||||
|
delay(100);
|
||||||
|
digitalWrite ( MotorIN1, LOW );
|
||||||
|
analogWrite ( MotorIN2, 255 );
|
||||||
|
delay(90);
|
||||||
|
digitalWrite ( MotorIN2, LOW );
|
||||||
|
analogWrite ( MotorIN1, 255 );
|
||||||
|
delay(100);
|
||||||
|
digitalWrite ( MotorIN1, LOW );
|
||||||
|
analogWrite ( MotorIN2, 200 );
|
||||||
|
delay(2000);
|
||||||
|
|
||||||
|
|
||||||
|
StartRoutine = 1;
|
||||||
|
encoder0Pos=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void docalc() {
|
||||||
|
|
||||||
|
if (millis() - previousMillis > interval)
|
||||||
|
{
|
||||||
|
previousMillis = millis();
|
||||||
|
long error = encoder0Pos - target ; // find the error term of current position - target
|
||||||
|
|
||||||
|
//generalized PID formula
|
||||||
|
//correction = Kp * error + Kd * (error - prevError) + kI * (sum of errors)
|
||||||
|
long motorspeed = KP * error + KD * (error - lastError) +KI * (sumError);
|
||||||
|
|
||||||
|
lastError = error;
|
||||||
|
sumError += error;
|
||||||
|
|
||||||
|
//scale the sum for the integral term
|
||||||
|
if(sumError > iMax) {
|
||||||
|
sumError = iMax;
|
||||||
|
} else if(sumError < iMin){
|
||||||
|
sumError = iMin;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(motorspeed > 0){
|
||||||
|
if( motorspeed >= 255) motorspeed=255;
|
||||||
|
digitalWrite ( MotorIN1 , LOW );
|
||||||
|
analogWrite ( MotorIN2, motorspeed );
|
||||||
|
}
|
||||||
|
if(motorspeed < 0){
|
||||||
|
motorspeed = -1 * motorspeed;
|
||||||
|
if( motorspeed >= 255) motorspeed=255;
|
||||||
|
digitalWrite ( MotorIN2 , LOW );
|
||||||
|
analogWrite ( MotorIN1, motorspeed );
|
||||||
|
//digitalWrite ( MotorIN1 , HIGH );
|
||||||
|
//analogWrite ( MotorIN2, 255 - motorspeed );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void doEncoderMotor0(){
|
||||||
|
//if (((PIND&B0000100)>>2) == HIGH) { // found a low-to-high on channel A; if(digitalRead(encoderPinA)==HIGH){.... read PD2 (I2)
|
||||||
|
if(digitalRead(encoder0PinA)==HIGH){
|
||||||
|
|
||||||
|
if ((PINB&B0000001) == LOW) { // check channel B to see which way; if(digitalRead(encoderPinB)==LOW){.... read PB0 (I8)
|
||||||
|
// encoder is turning
|
||||||
|
encoder0Pos-- ; // CCW
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
encoder0Pos++ ; // CW
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // found a high-to-low on channel A
|
||||||
|
{
|
||||||
|
if ((PINB&B0000001) == LOW) { // check channel B to see which way; if(digitalRead(encoderPinB)==LOW){.... read PB0 (I8)
|
||||||
|
// encoder is turning
|
||||||
|
encoder0Pos++ ; // CW
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
encoder0Pos-- ; // CCW
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void countStep(){
|
||||||
|
//dir=digitalRead(DIR_PIN)==HIGH;
|
||||||
|
dir = (PINC&B0000001); // dir=digitalRead(dir_pin) read PC0, 14 digital;
|
||||||
|
//here will be (PINB&B0000001) to not use shift in the stable version
|
||||||
|
if (dir) target1++;
|
||||||
|
else target1--;
|
||||||
|
}
|
||||||
0
Moteur DC/ServoStrap/digitalWriteFast.h
Normal file → Executable file
0
Moteur DC/ServoStrap/keywords.txt
Normal file → Executable file
0
Moteur DC/Test/Test_Moteur_DC/Test_Moteur_DC.ino
Normal file → Executable file
0
Moteur DC/Test/Test_Roue_Codeuse/Test_Roue_Codeuse.ino
Normal file → Executable file
0
imprimante_3d_fablab/Imprimante_3d_fablab.SLDASM
Normal file → Executable file
0
imprimante_3d_fablab/pièces/Boulon M6 hexa 30mm.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/HeatingBed_214x214mm.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/NORDEX-ABX-C3-8.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/Rexroth-Default.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/Tasseau M6.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/User Library-fan - pabst 512f.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/ZERO MAX-SC030R-SC030R - 5 mm x 8 mm_SC030R_A-1.sldprt
Normal file → Executable file
0
imprimante_3d_fablab/pièces/axe charnière.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/batant charnière.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/eclisse_40x40x222_bisote_x1.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/eclisse_40x40x404_bisote_x2.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/eclisse_40x40x670_bisote_x1.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/eclisse_40x40x704_bisote_x2.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/plaque_acrylique_380x210.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/plaque_acrylique_380x670.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/plaque_acrylique_380x680.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/plaque_acrylique_680x210.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/plaque_acrylique_680x670.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/plaque_acrylique_680x670_porte.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/plaque_repartition_aire_chaud_300x544mm.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/plaque_verre_428x210mm.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/porte.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/prof_40x40x300mm.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/prof_40x40x600mm.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/support_moteur_chassis.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/support_plateau.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/pièces/volume_d_impression.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Base.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Cuerpo.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Eje.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/NEMA 17 with T5 Pulley.SLDASM
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/NEMA 17 with T5 Pulley.STEP
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/NEMA 17 with T5 Pulley.STP
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/NEMA 17+support.SLDASM
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/NEMA 17.SLDASM
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/NEMA 17.STL
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Renderings/NEMA 17 with T5 Pulley Render.avi
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Renderings/NEMA 17 with T5 Pulley Render.gif
Normal file → Executable file
|
Before Width: | Height: | Size: 273 KiB After Width: | Height: | Size: 273 KiB |
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Renderings/NEMA 17 with T5 Pulley.avi
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Renderings/NEMA17 2.JPG
Normal file → Executable file
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Renderings/NEMA17 3.JPG
Normal file → Executable file
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Renderings/NEMA17 with T5 Pulley.JPG
Normal file → Executable file
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 166 KiB |
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/T5 Pulley.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/Tapa.SLDPRT
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/NEMA 17/radial ball bearing_68_am.sldprt
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/cadre_600x300mm.SLDASM
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/carcasse.SLDASM
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/charniere.SLDASM
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/couvercle.SLDASM
Normal file → Executable file
0
imprimante_3d_fablab/sous_assemblages/plateau_complet.SLDASM
Normal file → Executable file
0
imprimante_3d_fablab/vue_carcasse+plateau_16.11.2015.png
Normal file → Executable file
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 166 KiB |
0
imprimante_3d_fablab/vue_carcasse+volume_impression_13.11.2015.png
Normal file → Executable file
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
0
imprimante_3d_fablab/vue_carcasse_13.11.2015.png
Normal file → Executable file
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
0
imprimante_3d_fablab/vue_carcasse_prof_only_16.11.2015.png
Normal file → Executable file
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
0
imprimante_3d_fablab/vue_dessu_cotes_pour_core_XY_16.11.2015.png
Normal file → Executable file
|
Before Width: | Height: | Size: 226 KiB After Width: | Height: | Size: 226 KiB |
0
imprimante_3d_fablab/vue_plateau_15.11.2015.png
Normal file → Executable file
|
Before Width: | Height: | Size: 193 KiB After Width: | Height: | Size: 193 KiB |