UC arduino pour la Commande numerique
3 participants
métabricoleur :: FAO, Pilotage Machine CNc, Gcode, réalisations en CNC :: Autres logiciels de pilotage
Page 1 sur 1
UC arduino pour la Commande numerique
salut
pendant les vacances je suis aller voir mon neveux dans le nord de l hexagone
est je vois c est deux filles 6 ans est 8 ans jouer ( ce chamailler ) avec des gros lego
elle pose par terre les deux lego et leurs bazars qui part dans tous les sens ???
c est quoi ce machin est la elle m explique en gros ce que c est
est la je voie les commande dans leur mains pour diriger leur bidule
en plus ca cour apres tous ce qui bouge
je me rappel il y a un moment visualiser la robotique éducative a la tv
des chalenges entre université avec une base arduino
j avais découvert la section Arduino sur le forum il y a un moment
j ai chercher un peux sur le net une grande partie est en anglais
https://www.arduino.cc/
j ai trouver une rubrique en français
https://www.arduino.cc/en/Reference/HomePage?from=Reference.Extended
https://forum.arduino.cc/index.php?board=33.0
j ai télécharger le logiciel Arduino
https://www.arduino.cc/en/Main/Software#
j ai acheter une mallette avec les composants de base
il y avez deux Arduino un uno r3 d origine est un méga un clone
un Arduino reconnue par le pc est pas l autre
il faut un drivers pour les clones
faire attention vaux mieux avoir un vrais Arduino uno r3
avec certain clone il faut ce faire bien chier pour essayer de les faire
fonctionner sans résultat
parcourue les liens les forum d Arduino
j ai une foule de marque page sur ce sujet ca commence a envahir le
navigateur
envisager les applications possible pour notre atelier
j ai essayer de comprendre le langage ?? c était de l eau avec le boudin
au bout d un certain temps c est de l eau de boudin
au début je me suis consigner sur un montage simple pour commencer
un Arduino uno r3 avec un écran LCD est comprendre le fonctionnement
je suis rester une semaine a chercher pour avoir la bonne configuration
j ai les deux mème écran LCD avec deux type d adresse (0x27,20,4);
(0x3f,20,4);
comme par hasard j avais la mauvaise configuration suivant l écran LCD utiliser
j ai même acheter un écrans LCD tactile il faut encore s avoir le configurer
https://fr.aliexpress.com/item/2-4i...h0104.8.46.40857a88Zp1E5R&transAbTest=ae803_3
ici tous est expliquer
https://www.instructables.com/id/How-to-Use-I2C-Serial-LCD-20X4-Yellow-Backlight/
il faut mètre la Bibliothèque a jours
dans la fenêtre croquis/ inclure une Bibliothèque / gestion de Bibliothèque
ca ouvre une fenêtre sur celle de droite un copie/coller LiquidCrystal I2C
sélection LiquidCrystal_I2C by franck de brabander
le branchement VCC +5V GND SDA SCL
Arduino brancher avec la prise USB du pc pour alimenter en tension
Arduino plus écran LCD
le program injecter depuis l arduino
telechargement du promarme arduino
j ai pas fait ca pour rien est ca peux aider du monde
entre temps je me suit dit si c est brancher ca doit fonctionner
du coup j ai chercher une autre alternative a l ecran lcd 2004
est j ai trouver la bonne configuration de l ecran lcd 2004
j avais pris un LCD TFT-3.2 a 6 € qui est rester dans la boite
http://f1rmb.blog.free.fr/index.php?post/2014/03/03/Utilisation-shield-LCD-TFT-3.2-avec-Touchscreen
a plus
pendant les vacances je suis aller voir mon neveux dans le nord de l hexagone
est je vois c est deux filles 6 ans est 8 ans jouer ( ce chamailler ) avec des gros lego
elle pose par terre les deux lego et leurs bazars qui part dans tous les sens ???
c est quoi ce machin est la elle m explique en gros ce que c est
est la je voie les commande dans leur mains pour diriger leur bidule
en plus ca cour apres tous ce qui bouge
je me rappel il y a un moment visualiser la robotique éducative a la tv
des chalenges entre université avec une base arduino
j avais découvert la section Arduino sur le forum il y a un moment
j ai chercher un peux sur le net une grande partie est en anglais
https://www.arduino.cc/
j ai trouver une rubrique en français
https://www.arduino.cc/en/Reference/HomePage?from=Reference.Extended
https://forum.arduino.cc/index.php?board=33.0
j ai télécharger le logiciel Arduino
https://www.arduino.cc/en/Main/Software#
j ai acheter une mallette avec les composants de base
il y avez deux Arduino un uno r3 d origine est un méga un clone
un Arduino reconnue par le pc est pas l autre
il faut un drivers pour les clones
faire attention vaux mieux avoir un vrais Arduino uno r3
avec certain clone il faut ce faire bien chier pour essayer de les faire
fonctionner sans résultat
parcourue les liens les forum d Arduino
j ai une foule de marque page sur ce sujet ca commence a envahir le
navigateur
envisager les applications possible pour notre atelier
j ai essayer de comprendre le langage ?? c était de l eau avec le boudin
au bout d un certain temps c est de l eau de boudin
au début je me suis consigner sur un montage simple pour commencer
un Arduino uno r3 avec un écran LCD est comprendre le fonctionnement
je suis rester une semaine a chercher pour avoir la bonne configuration
j ai les deux mème écran LCD avec deux type d adresse (0x27,20,4);
(0x3f,20,4);
comme par hasard j avais la mauvaise configuration suivant l écran LCD utiliser
j ai même acheter un écrans LCD tactile il faut encore s avoir le configurer
https://fr.aliexpress.com/item/2-4i...h0104.8.46.40857a88Zp1E5R&transAbTest=ae803_3
ici tous est expliquer
https://www.instructables.com/id/How-to-Use-I2C-Serial-LCD-20X4-Yellow-Backlight/
il faut mètre la Bibliothèque a jours
dans la fenêtre croquis/ inclure une Bibliothèque / gestion de Bibliothèque
ca ouvre une fenêtre sur celle de droite un copie/coller LiquidCrystal I2C
sélection LiquidCrystal_I2C by franck de brabander
le branchement VCC +5V GND SDA SCL
Arduino brancher avec la prise USB du pc pour alimenter en tension
Arduino plus écran LCD
le program injecter depuis l arduino
telechargement du promarme arduino
- Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0xf8,20,4); // (0x27,20,4)
void setup()
{
lcd.init(); // initialize lcd
lcd.init(); // Print a message to the LCD.
lcd.backlight();
lcd.setCursor(3,0); lcd.print("Hello, world!");
lcd.setCursor(2,1); lcd.print("Ywrobot Arduino!");
lcd.setCursor(0,2); lcd.print("Arduino LCM IIC 2004");
lcd.setCursor(2,3); lcd.print("Power By Ec-yuan!");
}
void loop()
{
}
j ai pas fait ca pour rien est ca peux aider du monde
entre temps je me suit dit si c est brancher ca doit fonctionner
du coup j ai chercher une autre alternative a l ecran lcd 2004
est j ai trouver la bonne configuration de l ecran lcd 2004
j avais pris un LCD TFT-3.2 a 6 € qui est rester dans la boite
http://f1rmb.blog.free.fr/index.php?post/2014/03/03/Utilisation-shield-LCD-TFT-3.2-avec-Touchscreen
a plus
Dernière édition par faux jetons le Jeu 9 Nov 2023 - 10:15, édité 2 fois
faux jetons- posteur Régulier
- Messages : 157
Points : 189
Date d'inscription : 04/02/2023
Age : 63
Localisation : aquitaine 33220
Re: UC arduino pour la Commande numerique
salut
j ai pas fait cela pour voir tourner des lumières
je veux faire des montages en mode autonomes
avec une alimentation 12 /24 volts +/- 10 amperes
j ai chercher a comprendre le fonctionnement du clavier
bon pour finir j ai fait un copie coller d un fichier
j ai pas fait cela pour voir tourner des lumières
je veux faire des montages en mode autonomes
avec une alimentation 12 /24 volts +/- 10 amperes
j ai chercher a comprendre le fonctionnement du clavier
bon pour finir j ai fait un copie coller d un fichier
- Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27,20,4); // Réglez adresse de l ecran LCD 0x27 / 0x3f affichage 20 caractères et 4 lignes
const byte numRows= 4;
const byte numCols= 4;
char keymap[numRows][numCols]=
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'.','0','#','D'}
};
byte rowPins[numRows] = {11,10,9,8};
byte colPins[numCols]= {7,6,5,4};
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
String numstr = "";
void setup()
{
lcd.init();
lcd.backlight();
lcd.print("start LCD2004");
delay(1000);
lcd.clear();
}
void loop()
{
lcd.setCursor(0,0);
lcd.print(" 4x4 16 Keypad ");
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY)
{
lcd.setCursor(0,1);
lcd.print("keypressed=" + (String)keypressed + " ");
switch (keypressed)
{
case '1':
numstr = "1 ";
break;
case '2':
numstr = "2 ";
break;
case '3':
numstr = "3 ";
break;
case '4':
numstr = "4 ";
break;
case '5':
numstr = "5 ";
break;
case '6':
numstr = "6 ";
break;
case '7':
numstr = "7 ";
break;
case '8':
numstr = "9 ";
break;
case '0':
numstr = "0 ";
break;
case 'A':
numstr = "A ";
break;
case 'B':
numstr = "B ";
break;
case 'C':
numstr = "C ";
break;
case 'D':
numstr = "D ";
break;
case '*':
numstr = "* ";
break;
case '#':
numstr = "# ";
break;
default:
break;
}
if(numstr !="")
{
lcd.setCursor(0,2);
lcd.print("numstr=" + (String)numstr + " ");
}
}
}
faux jetons- posteur Régulier
- Messages : 157
Points : 189
Date d'inscription : 04/02/2023
Age : 63
Localisation : aquitaine 33220
Re: UC arduino pour la Commande numerique
salut
j ai mis le driver qui était fournie dans le kit en boite
brancher sur les pattes step+ 12 dir+ 13
avec le moteur pas a pas brancher sur le drivers a a- b b-
avoir une configuration de base que j ai dans les favoris
je suis partie sur c est deux base essayer de comprendre le fonctionnement
virer ce que j aime pas est gardez ce qui me plait pour simplifier le
montage est le fonctionnement
j ai vérifier de prés les branchement sur les photo
https://www.cnczone.com/forums/arduino/215402-cnc-5.html#post1796162
https://www.homemodelenginemachinis...or-a-3-rotary-table.25783/page-5#post-291671
la aussi j ai mis du temps pour faire fonctionner le tous
le programme avec le moteur
a plus
j ai mis le driver qui était fournie dans le kit en boite
brancher sur les pattes step+ 12 dir+ 13
avec le moteur pas a pas brancher sur le drivers a a- b b-
avoir une configuration de base que j ai dans les favoris
je suis partie sur c est deux base essayer de comprendre le fonctionnement
virer ce que j aime pas est gardez ce qui me plait pour simplifier le
montage est le fonctionnement
j ai vérifier de prés les branchement sur les photo
https://www.cnczone.com/forums/arduino/215402-cnc-5.html#post1796162
https://www.homemodelenginemachinis...or-a-3-rotary-table.25783/page-5#post-291671
la aussi j ai mis du temps pour faire fonctionner le tous
le programme avec le moteur
a plus
Dernière édition par faux jetons le Jeu 9 Nov 2023 - 14:02, édité 1 fois
faux jetons- posteur Régulier
- Messages : 157
Points : 189
Date d'inscription : 04/02/2023
Age : 63
Localisation : aquitaine 33220
Re: UC arduino pour la Commande numerique
salut
ce que je cherche a faire
c est de motoriser les trois axes sur ma fraiseuse détablie
une ZAY7045 FG/1 et pouvoir garder le mode manuelle
avoir un moteur sur les trois axes
les moteur tourne facilement a vide
je peux gardez les manivelles elle sont débrayable est pouvoir les utiliser en manuelle
j ai dejas une visse a bille sur l axe Z il me reste a insérer le moteur dessus
avec le moteur nema 34 qui a un axes de 14 mm
la vitesse des moteur est de 0 a 2000 tours /mn
avec la configuration de l Arduino j ai 400 steps par tour du moteur
j ai mis un certain temps avant de les faire fonctionne avec l Arduino
j avais la doc fournis avec le moteur le tous en anglais un plant c est lisible de tous le monde
j ai trouver qu aucun avec la bonne configuration fournis il ne pouvez tourner
il avez aucun référence de bonnes dans les fils de connexion il y avez pas la bonne couleur
il n étais pas relier ensemble dans la prise mal / femelle fournis avec le moteur // drivers
j ai démonter le cul du moteur est pris une photo remonter des borniers fils pour comprendre
maintenant ca fonctionne
analyse du comportement moteur nema 34
je vais faire des réducteurs planétaire pour adapter les visses a billes au pas de 1000
pour avoir un pas qui correspond a une uniter de mesure 1 steps = 0.005 mm
il y a peux de temps j ai acheter deux autre visse a bille de 2005 de 1300 mm de long pour les axes Y X
https://fr.aliexpress.com/item/Zero...218.html?spm=a2g0s.9042311.0.0.40696c37IkEAEE
je vais reprendre un moteur en plus ca se feras a la vitesse suivant les finances a ma disposition
je vous ferais un résumer en photo est commentaire en partant sans base avec un Arduino
il me resteras a faire le pupitre de commande et configurer le programme
avec trois Arduino est trois drivers un pour chaque axe est au cas pouvoir passer
en cnc avec ma fraiseuse avec un seul Arduino avec le programme MultiCN de CNCSERV
c est le meme branchement sur un nema 23.ou 34
je vais passer mon diviseur semi universel avec le nema 23 avec
un encodeur incremental 2500 pas que je viens de commander
a plus
ce que je cherche a faire
c est de motoriser les trois axes sur ma fraiseuse détablie
une ZAY7045 FG/1 et pouvoir garder le mode manuelle
avoir un moteur sur les trois axes
les moteur tourne facilement a vide
je peux gardez les manivelles elle sont débrayable est pouvoir les utiliser en manuelle
j ai dejas une visse a bille sur l axe Z il me reste a insérer le moteur dessus
avec le moteur nema 34 qui a un axes de 14 mm
la vitesse des moteur est de 0 a 2000 tours /mn
avec la configuration de l Arduino j ai 400 steps par tour du moteur
j ai mis un certain temps avant de les faire fonctionne avec l Arduino
j avais la doc fournis avec le moteur le tous en anglais un plant c est lisible de tous le monde
j ai trouver qu aucun avec la bonne configuration fournis il ne pouvez tourner
il avez aucun référence de bonnes dans les fils de connexion il y avez pas la bonne couleur
il n étais pas relier ensemble dans la prise mal / femelle fournis avec le moteur // drivers
j ai démonter le cul du moteur est pris une photo remonter des borniers fils pour comprendre
maintenant ca fonctionne
analyse du comportement moteur nema 34
je vais faire des réducteurs planétaire pour adapter les visses a billes au pas de 1000
pour avoir un pas qui correspond a une uniter de mesure 1 steps = 0.005 mm
il y a peux de temps j ai acheter deux autre visse a bille de 2005 de 1300 mm de long pour les axes Y X
https://fr.aliexpress.com/item/Zero...218.html?spm=a2g0s.9042311.0.0.40696c37IkEAEE
je vais reprendre un moteur en plus ca se feras a la vitesse suivant les finances a ma disposition
je vous ferais un résumer en photo est commentaire en partant sans base avec un Arduino
il me resteras a faire le pupitre de commande et configurer le programme
avec trois Arduino est trois drivers un pour chaque axe est au cas pouvoir passer
en cnc avec ma fraiseuse avec un seul Arduino avec le programme MultiCN de CNCSERV
c est le meme branchement sur un nema 23.ou 34
je vais passer mon diviseur semi universel avec le nema 23 avec
un encodeur incremental 2500 pas que je viens de commander
a plus
Dernière édition par faux jetons le Jeu 9 Nov 2023 - 10:49, édité 1 fois
faux jetons- posteur Régulier
- Messages : 157
Points : 189
Date d'inscription : 04/02/2023
Age : 63
Localisation : aquitaine 33220
Re: UC arduino pour la Commande numerique
salut
j ai fait des essais avec l encodeur incremental 400 pas que j ai
avec une code Basic
j arrive a visualiser le fonctionnement
j ai commander un a 2500 pas
essai encodeur incremental
a plus
j ai fait des essais avec l encodeur incremental 400 pas que j ai
avec une code Basic
j arrive a visualiser le fonctionnement
j ai commander un a 2500 pas
essai encodeur incremental
- Code:
#include <Wire.h>
#include <RotaryEncoder.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x3f,20,4); // Réglez adresse de l ecran LCD 0x27 / 0x3f affichage 20 caractères et 4 lignes
const byte ROWS = 4; // la configuration du clavier
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'.','0','#','D'}
};
byte rowPINS[ROWS] = {11,10,9,8}; // le numéro de la broche ranger relier du clavier a uno
byte colPINS[COLS] = {7,6,5,4}; // le numéro de la broche colonnes relier du clavier a uno
Keypad kpd = Keypad(makeKeymap(keys),rowPINS,colPINS, ROWS, COLS);
RotaryEncoder encoder(A3, A4); // Setup a RoraryEncoder for pins A3 and A4:
void setup()
{
lcd.init();
lcd.backlight();
lcd.begin(20,4); // initialize the lcd
lcd.setBacklight(1); lcd.print("Rotator LCD");
}
void loop() // Read the current position of the encoder and print out when changed.
{
static int pos = 0;
encoder.tick();
int newPos = encoder.getPosition();
if (pos != newPos) {
lcd.setCursor(0, 1); lcd.print(newPos); lcd.print(" ");
pos = newPos;
}
}
a plus
faux jetons- posteur Régulier
- Messages : 157
Points : 189
Date d'inscription : 04/02/2023
Age : 63
Localisation : aquitaine 33220
Re: UC arduino pour la Commande numerique
salut
apres avoir regardez et compris le fonctionnement
du programme sur d autre forum
https://www.cnczone.com/forums/arduino/215402-cnc-5.html#post1796162
https://www.homemodelenginemachinis...or-a-3-rotary-table.25783/page-5#post-291671
j ai enlever certaine option
inserrer un joystick
fait un programme pour clavier 4 x 4
fait un programme pour clavier 4 x 5 il y a que cela qui change
le programme complet pour un plateaux diviseur circulaire 1/90
j ai fait un montage a blanc qui fonctionne
a plus
apres avoir regardez et compris le fonctionnement
du programme sur d autre forum
https://www.cnczone.com/forums/arduino/215402-cnc-5.html#post1796162
https://www.homemodelenginemachinis...or-a-3-rotary-table.25783/page-5#post-291671
j ai enlever certaine option
inserrer un joystick
fait un programme pour clavier 4 x 4
- Code:
const byte ROWS = 4; // la configuration du clavier
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'.','0','#','D'}
};
byte rowPINS[ROWS] = {11,10,9,8}; // le numéro de la broche ranger relier du clazvier a uno
byte colPINS[COLS] = {4,5,6,7}; // le numéro de la broche colonnes relier du clazvier a uno
fait un programme pour clavier 4 x 5 il y a que cela qui change
- Code:
const byte ROWS = 5; // la configuration du clavier
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'A','F','#','.'},
{'1','2','3','H'},
{'4','5','6','B'},
{'7','8','9','C'},
{'G','0','D','E'}
};
byte rowPINS[ROWS] = {11,10,9,8,7}; // le numéro de la broche ranger relier du clazvier a uno
byte colPINS[COLS] = {3,4,5,6}; // le numéro de la broche colonnes relier du clazvier a uno
le programme complet pour un plateaux diviseur circulaire 1/90
- Code:
#include <AxisJoystick.h>
#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <AccelStepper.h>
LiquidCrystal_I2C lcd(0x27,20,4); // Réglez adresse de l ecran LCD 0x27 / 0x3f affichage 20 caractères et 4 lignes
const byte ROWS = 4; // la configuration du clavier
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'.','0','#','D'}
};
byte rowPINS[ROWS] = {11,10,9,8}; // le numéro de la broche ranger relier du clazvier a uno
byte colPINS[COLS] = {4,5,6,7}; // le numéro de la broche colonnes relier du clazvier a uno
Keypad kpd = Keypad(makeKeymap(keys),rowPINS,colPINS, ROWS, COLS);
int buttonState = 0; // variable pour lire l'état du bouton-rotation a A0
const byte motorSpeedPin = 12; // Définition des broches driver pour le joystick
const byte motorDirPin = 13;
const int pull = 12; // connecter a la broche 12 a pull+
const int dir = 13; // connectez la broche 13 à dir+
const int Multiplier = 100; // nema 23 = 800 rapport 1/90=360 degrees = 288000 steps / 3200 steps = 1 tour moteur / 800 steps = 1 Degrees
float Degrees = 0; // Degrés d'entrée série nema 34 = 100 rapport 1/90 = 360 degrees = 36000 steps / 400 steps = 1 tour moteur / 100 steps = 1 Degrees
float ToMove = 0; // Étapes à suivre= nema 34 + 1/36 = 1600 rapport 1/40 = 360 degrees = 576000 steps / 14400 steps = 1 tour moteur / 1600 steps = 1 Degrees
float bob = 0;
float Divisions;
float current = 0;
int Mode = 0;
int speed = 0; // lire depuis le potentiomètre
int maxspeed = 8000; // vitesse maximale du drivers
int stepspeed = 8000; // vitesse en pas par seconde
byte percentage = 100; // vitesse% sur LCD
AccelStepper stepper(1, pull, dir); // (mode:1 = driver)
// configuration joystick
const byte joyStickPinX = A1; // Définition axes X joystick
const byte joyStickPinY = A2; // Définition axes y joystick joystick
const byte joyStickPinSW = 2; // Définition bouton centrale
int joyValue = 127; //Joystick input variables
int joyValueMax = 1023; // valeur maxi
int joyValueMin = 0; // valeur mini
int joyValueMid = 512; // valeur au point centrale
int joyValueMidUpper = joyValueMid + 50; // valeur signée de + 462 à + 562
int joyValueMidLower = joyValueMid - 50; // valeur signée
byte motorSpeed = 0; // motor joystick variables
byte motorSpeedMax = 255; // motor joystick variables
byte motorSpeedMin = 51; // motor joystick variables
unsigned long startDelay;
int tempo = 6;
void setup()
{
lcd.init(); // initialiser le lcd
pinMode(pull, OUTPUT);
pinMode(dir, OUTPUT);
pinMode(A0, INPUT); // initialiser le potentiomètre
Serial.begin(9600);
stepper.setMaxSpeed(maxspeed); // vitesse maximale du Moteur
stepper.setSpeed(stepspeed); // vitesse pas à pas
stepper.setAcceleration(100); // accélération pas à pas: pas nécessaire
stepper.setCurrentPosition(0); // position actuelle du Moteur
pinMode(joyStickPinX, INPUT);
pinMode(motorSpeedPin, OUTPUT);
pinMode(motorDirPin, OUTPUT);
startDelay = millis();
lcd.backlight(); // efface ecran LCD noir
lcd.setCursor(0,0); lcd.print(" Plateau Rotatif "); // message bienvenue sur ecran LCD tableaux 1 eme affichage
lcd.setCursor(0,1); lcd.print(" Diviseur Universel ");
lcd.setCursor(0,2); lcd.print(" Usinage De Formes ");
lcd.setCursor(0,3); lcd.print(" Rapport 90/1 = 360 "); // affichage de la configuration du rapport de division
delay(2000);
lcd.begin(20,4);
Mode = GetMode();
}
void software_Reset() //Redémarre le programme depuis le début mais ne réinitialise pas les périphériques et les registres
{
asm volatile (" jmp 0");
}
float GetNumber() // selection degrees .00
{
float num = 0.000;
float decimal = 0.000;
float decnum = 0.000;
int counter = 0;
char key = kpd.getKey();
lcd.setCursor(0,0); lcd.print(" Enter Degrees .00 "); // demande de selection
lcd.setCursor(0,1); lcd.print(" Puis Appuyez Sur # "); // marche a suivre
lcd.setCursor(0,2); lcd.print(" Mode Joystick");
lcd.setCursor(0,3); lcd.print(" Reinitialiser = D "); // revenir a l ecran de presentation
lcd.setCursor(0,2); // affichage nselection la 3 case 3 lignes
bool decOffset = false;
while(key != '#') // valider ce chois
{
switch (key)
{
case NO_KEY: // affichage selection des numeros sur le clavier
break;
case '.':
if(!decOffset)
{
decOffset = true;
}
lcd.print(key); // affichage selection des numeros sur le clavier
break;
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
if(!decOffset)
{
num = num * 10 + (key - '0');
lcd.print(key);
}
else if((decOffset) && (counter <= 1))
{
num = num * 10 + (key - '0');
lcd.print(key);
counter++;
}
break;
case 'D': // Reinitialiser revenir a l ecran de presentation
software_Reset();
break;
}
decnum = num / pow(10, counter);
key = kpd.getKey(); // fin configuration rotation
joyValue = analogRead(joyStickPinX); //joyValue = analogRead(joyStickPinY);
if(joyValue > joyValueMidUpper) //Forward
{
motorSpeed = map(joyValue, joyValueMidUpper, joyValueMax, motorSpeedMin, motorSpeedMax);
MotorForward(motorSpeed);
}
else if(joyValue < joyValueMidLower) //Backward
{
motorSpeed = map(joyValue, joyValueMidLower, joyValueMin, motorSpeedMin, motorSpeedMax);
MotorBackward(motorSpeed);
}
else
{
MotorStop();
}
}
return decnum;
}
float Getjogging() // selection Jogging
{
float Degrees = 0;
float num = 0.000;
char key = kpd.getKey();
lcd.clear();
lcd.setCursor(0,0); lcd.print(" Enter Degree A B C ");
lcd.setCursor(0,1); lcd.print(" A 20 B 45 C 90 Jog ");
lcd.setCursor(0,2); lcd.print(" Mode Joystick");
lcd.setCursor(0,3); lcd.print("OK #"); lcd.print(" Reinitialiser D"); // revenir a l ecran de presentation
while(key != '#')
{
switch (key)
{
case NO_KEY:
break;
case 'A':
Degrees = 20;
lcd.setCursor(0,2);lcd.print(Degrees);
break;
case 'B':
Degrees = 45;
lcd.setCursor(0,2);lcd.print(Degrees);
break;
case 'C':
Degrees = 90;
lcd.setCursor(0,2);lcd.print(Degrees);
break;
case 'D': // Reinitialiser revenir a l ecran de presentation
software_Reset();
break;
}
key = kpd.getKey();
joyValue = analogRead(joyStickPinX); //joyValue = analogRead(joyStickPinY);
if(joyValue > joyValueMidUpper) //Forward
{
motorSpeed = map(joyValue, joyValueMidUpper, joyValueMax, motorSpeedMin, motorSpeedMax);
MotorForward(motorSpeed);
}
else if(joyValue < joyValueMidLower) //Backward
{
motorSpeed = map(joyValue, joyValueMidLower, joyValueMin, motorSpeedMin, motorSpeedMax);
MotorBackward(motorSpeed);
}
else
{
MotorStop();
}
}
return Degrees;
}
float GetDivisions() // selection Divisions
{
float Degrees = 0;
float num = 0.000;
char key = kpd.getKey();
lcd.clear();
lcd.setCursor(0,0); lcd.print(" Enter Divisions Nbs"); // demande de selection du chois
lcd.setCursor(0,1); lcd.print(" Valider Appuyez # "); // marche a suivre
lcd.setCursor(0,2); lcd.print(" Mode Joystick");
lcd.setCursor(0,3); lcd.print(" Reinitialiser = D "); // revenir a l ecran de presentation
lcd.setCursor(0,2);
while(key != '#') // valider ce chois
{
switch (key)
{
case NO_KEY: // affichage selection des numeros sur le clavier
break;
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
num = num * 10 + (key - '0');
lcd.print(key);
break;
case 'D': // Reinitialiser revenir a l ecran de presentation
software_Reset();
break;
}
key = kpd.getKey(); // fin configuration rotation
joyValue = analogRead(joyStickPinX); //joyValue = analogRead(joyStickPinY);
if(joyValue > joyValueMidUpper) //Forward
{
motorSpeed = map(joyValue, joyValueMidUpper, joyValueMax, motorSpeedMin, motorSpeedMax);
MotorForward(motorSpeed);
}
else if(joyValue < joyValueMidLower) //Backward
{
motorSpeed = map(joyValue, joyValueMidLower, joyValueMin, motorSpeedMin, motorSpeedMax);
MotorBackward(motorSpeed);
}
else
{
MotorStop();
}
}
return num;
}
int Rotation() // selection Rotation
{
int num = 0;
char key = kpd.getKey();
lcd.clear();
lcd.setCursor(0,0); lcd.print(" Entrez Nombre Tours"); // demande de selection du nombre et marche a suivre
lcd.setCursor(0,1); lcd.print(" Valider Appuyez # "); // demande de marche a suivre sur ecran LCD
lcd.setCursor(0,2); lcd.print(" Mode Joystick");
lcd.setCursor(0,3); lcd.print(" Reinitialiser = D "); // Reinitialiser revenir a l ecran de presentation
lcd.setCursor(0,2);
while(key != '#') // valider ce chois
{
switch (key)
{
case NO_KEY:
break;
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
num = num * 10 + (key - '0');
lcd.print(key);
break;
case 'D': // Reinitialiser revenir a l ecran de presentation
software_Reset();
break;
}
key = kpd.getKey(); // fin configuration rotation
joyValue = analogRead(joyStickPinX); //joyValue = analogRead(joyStickPinY);
if(joyValue > joyValueMidUpper) //Forward
{
motorSpeed = map(joyValue, joyValueMidUpper, joyValueMax, motorSpeedMin, motorSpeedMax);
MotorForward(motorSpeed);
}
else if(joyValue < joyValueMidLower) //Backward
{
motorSpeed = map(joyValue, joyValueMidLower, joyValueMin, motorSpeedMin, motorSpeedMax);
MotorBackward(motorSpeed);
}
else
{
MotorStop();
}
}
return num;
}
int GetMode()
{
int mode = 0; // tableaux presentation 2 eme affichage
lcd.setCursor(0,0); lcd.print(" Degrees / 360 A ");
lcd.setCursor(0,1); lcd.print(" Division / 360 B "); // affichage selection du mode
lcd.setCursor(0,2); lcd.print(" Jogging 20 45 90 C ");
lcd.setCursor(0,3); lcd.print(" Rotation Nbs 360 D ");
while(mode == 0)
{
char key = kpd.getKey();
if(key == 'A') // degres minutes
{
mode = 1;
}
if(key == 'B') // mode diviseur
{
mode = 2;
}
if(key == 'C') // Rotation Jogging
{
mode = 3;
}
if(key == 'D') // Nbr Rotation *360
{
mode = 4;
}
}
lcd.clear();
return mode;
}
void loop() // affichage selection du chois
{
if(Mode == 1) // chois 1 en nombres de degres et minute = 60 ou radians = 100
{
Degrees = GetNumber();
}
if(Mode == 2) // chois 2 divisions
{
Divisions = GetDivisions();
Degrees = (360/Divisions);
}
if(Mode == 3) // chois 3 jogging
{
Degrees = Getjogging();
}
if(Mode == 4) // chois 4 en nombres de rotations
{
Degrees = (Rotation()*360);
}
lcd.clear();
lcd.setCursor(7,0); lcd.print("Total"); // operation du total 400 steps = 1 degrees
lcd.setCursor(0,3); lcd.print(" Av+ A Ar- B Chan C "); // affichage selection du chois 4 eme ligne sur ecran LCD
char key = kpd.getKey();
while(key != 'C') // retourne aao chois
{
speed = analogRead(A0);
stepspeed = map(speed,0,1023,1,maxspeed);
percentage = map(speed,0,1023,1,100);
stepper.setSpeed(stepspeed);
lcd.setCursor(0,0); lcd.print(abs(Degrees),2); lcd.print((char)223); // affichage du point
lcd.setCursor(13,0); lcd.print(bob,5); lcd.print(" "); //(bob) affichage resultat des degrees(bob,1) = 0.0 (bob,5) = 0.00000 evite l echo
lcd.setCursor(0,1); lcd.print("Steps"); // affichage des degres 2 eme lignes sur ecran LCD
lcd.setCursor(10,1); lcd.print("Speed:"); // affichage de la vitesse en % 2 eme lignes sur ecran LCD
lcd.setCursor(16,1); lcd.print(" ");
lcd.setCursor(16,1); lcd.print(percentage); lcd.print("%");
lcd.setCursor(0,2); lcd.print(""); lcd.print(ToMove,0); // ligne affichage du nombres de steps
key = kpd.getKey();
if(key == 'A') // valider ce chois
{
if(current + Degrees <= 360)
{
current = ((stepper.currentPosition()/ Multiplier) + Degrees);
}
else
{
current = (stepper.currentPosition()/ Multiplier) + Degrees-360;
}
bob = bob + Degrees;
ToMove = (Degrees*Multiplier)*+1;
stepper.move(ToMove);
Serial.println(ToMove);
stepper.setSpeed(stepspeed);
Serial.println(stepper.speed());
lcd.setCursor(0,2);
}
else if(key == 'B') // rotation en sens inverse anti horaire
{
if(current - Degrees >= 0)
{
current = ((stepper.currentPosition()/ Multiplier) - Degrees);
}
else
{
current = (stepper.currentPosition()/ Multiplier) - Degrees + 0;
}
bob = bob - Degrees;
ToMove = (Degrees*Multiplier)*-1; // le resultat de l operation en negatif
stepper.move(ToMove); // stepper = en mouvement pas a pas
Serial.println(ToMove);
stepper.setSpeed(-stepspeed);
Serial.println(stepper.speed());
lcd.setCursor(0,2); // affichage moteur en rotation 3 eme lignes 8/20 letres sur ecran LCD
}
if (buttonState == LOW) {
lcd.setCursor(8,2); lcd.print("En Rotation "); // affichage 3 eme lignes En Rotation
while (stepper.distanceToGo() != 0)
{
stepper.runSpeedToPosition();
} lcd.setCursor(0,2); lcd.print(" ");
}
}
lcd.clear(); // fin de l affichage 3 eme lignes En mouvement
}
void MotorBackward( byte Spd)
{
digitalWrite (motorDirPin, 1);
if (millis() >= startDelay + (2400/Spd)-10)
{ digitalWrite (motorSpeedPin, 1);
if (millis() >= tempo + startDelay + (255/Spd)-15)
{digitalWrite (motorSpeedPin, 0);
startDelay = millis(); // on mémorise le temps courant du chrono
}
}
}
void MotorForward( byte Spd)
{
digitalWrite (motorDirPin, 0);
if (millis() >= startDelay + (2400/Spd)-10)
{ digitalWrite (motorSpeedPin, 1);
if (millis() >= tempo + startDelay + (255/Spd)-15)
{digitalWrite (motorSpeedPin, 0);
startDelay = millis(); // on mémorise le temps courant du chrono
}
}
}
void MotorStop()
{
}
j ai fait un montage a blanc qui fonctionne
a plus
Dernière édition par faux jetons le Jeu 9 Nov 2023 - 10:56, édité 1 fois (Raison : ux cir)
faux jetons- posteur Régulier
- Messages : 157
Points : 189
Date d'inscription : 04/02/2023
Age : 63
Localisation : aquitaine 33220
Re: UC arduino pour la Commande numerique
salut
je viens de metre en boite un premier montage
avec une alimentation 24 volts 10 ampères que j ai dépiauter
pour gagner de la hauteur dans un boitier de 160 x 240 x 90
avec une plaque de font visser au boitier pour fixer le montage dessus
deux oméga fixer sur la plaque qui passe par dessus de l alimentation
pour y fixer dessus le divers est l arduino
dans le couvercle l écran un potentiomètre est un manette de jeux
j ai fat la configuration pour le diviseur circulaire 1/90 qui fonctionne
je vais pouvoir faire avec la couronnes du réducteur planétaire
j ai mis une protection avec un films de plastic mous
sur le boitier et le moteur pour éviter les projection
il me reste a tailler les outils pour usiner la couronne
a plus
je viens de metre en boite un premier montage
avec une alimentation 24 volts 10 ampères que j ai dépiauter
pour gagner de la hauteur dans un boitier de 160 x 240 x 90
avec une plaque de font visser au boitier pour fixer le montage dessus
deux oméga fixer sur la plaque qui passe par dessus de l alimentation
pour y fixer dessus le divers est l arduino
dans le couvercle l écran un potentiomètre est un manette de jeux
j ai fat la configuration pour le diviseur circulaire 1/90 qui fonctionne
je vais pouvoir faire avec la couronnes du réducteur planétaire
j ai mis une protection avec un films de plastic mous
sur le boitier et le moteur pour éviter les projection
il me reste a tailler les outils pour usiner la couronne
a plus
faux jetons- posteur Régulier
- Messages : 157
Points : 189
Date d'inscription : 04/02/2023
Age : 63
Localisation : aquitaine 33220
Re: UC arduino pour la Commande numerique
salut
apres avoir fait un montage
pour passer un plateaux circulaire
en commande numerique
ca donne ca en video
essai de l encodeur avec un moteur nema 23 avec l affichage
essai de l encodeur avec un moteur nema 23 avec l affichage
vous avez rien remarquer de bizarres ??
j ai penser de joindre un afficheur sur le pupitre de commande les composents pour ce boitier il y en a pour +/- 300 €
j ai refait montage avec une partie de l ancien qui fonctionne
le montage en video pour comprendre
plateaux diviseur circulaire de 150 mm 1/90
plateaux diviseur circulaire de 150 mm 1/90
a plus
apres avoir fait un montage
pour passer un plateaux circulaire
en commande numerique
ca donne ca en video
essai de l encodeur avec un moteur nema 23 avec l affichage
essai de l encodeur avec un moteur nema 23 avec l affichage
vous avez rien remarquer de bizarres ??
j ai penser de joindre un afficheur sur le pupitre de commande les composents pour ce boitier il y en a pour +/- 300 €
j ai refait montage avec une partie de l ancien qui fonctionne
le montage en video pour comprendre
plateaux diviseur circulaire de 150 mm 1/90
plateaux diviseur circulaire de 150 mm 1/90
a plus
Dernière édition par faux jetons le Lun 13 Nov 2023 - 21:34, édité 1 fois
faux jetons- posteur Régulier
- Messages : 157
Points : 189
Date d'inscription : 04/02/2023
Age : 63
Localisation : aquitaine 33220
Re: UC arduino pour la Commande numerique
Salut Faux jetons.....................tu as l'air de bien t amuser,travail de ouf chapeau
KOKO 57- complétement accro
- Messages : 9768
Points : 10712
Date d'inscription : 05/05/2015
Age : 58
Localisation : Moselle (57)
Re: UC arduino pour la Commande numerique
On peut parfois se demander pourquoi ils ont inventé la ponctuation, les majuscules, les capitales, les points…
Philippe_555- petit nouveau
- Messages : 40
Points : 42
Date d'inscription : 30/11/2017
Age : 64
Localisation : France
Sujets similaires
» [Arduino] Projet Tiroirs a commande numérique
» Librairie Arduino pour commande de moteur Pas à Pas
» Commande numérique pour montée/descente d'outil
» CNC commande numérique
» diviseur en commande numerique
» Librairie Arduino pour commande de moteur Pas à Pas
» Commande numérique pour montée/descente d'outil
» CNC commande numérique
» diviseur en commande numerique
métabricoleur :: FAO, Pilotage Machine CNc, Gcode, réalisations en CNC :: Autres logiciels de pilotage
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum