gl gl en gl en gl gl gl gl gl gl gl pt gl gl gl gl es gl gl gl gl pt gl gl gl es gl gl gl gl gl gl gl gl pt gl gl gl gl gl gl gl gl pl gl gl en en pt gl gl gl gl gl gl gl gl it fr gl gl gl es es gl gl gl gl gl fr gl en en gl en en es gl pt en en gl gl es es es en gl gl gl gl gl gl gl gl it it gl en en gl fr gl gl gl gl gl es zh fr gl gl gl gl gl gl en it gl ca pt gl it gl gl es gl gl en en gl en en en en gl en en en en en en en en en en en gl gl en en en en en en en gl gl en en en en en en gl gl
O control dos motores – mClon Robot
Imos facer unhas prácticas para controlar o movemento do mClon.
Para poder programar o movemento dos motores debemos dar as instrucións precisas para que os motores se movan nun sentido ou no outro e a unha velocidade determinada.
No mClon o motor esquerdo polos pins AIN1(D7, sentido de xiro) e PWMA (D6, velocidade) e o motor dereito está controlado polos pins  do driver BIN1(D4, sentido de xiro) e PWMB (D5, velocidade)
O primeiro que facemos, no inicio do programa, é definir os pins da placa cos que imos actuar.
Temos que configurar os pins anteriores como saída, pois por defecto os pins dixitais considéranse entradas.
Tamén imos poñer a instrución de que agarde a que o pulsador estea premido para evitar que comece a moverse nada máis cargar o programa e nos dea tempo a poñelo no chan. Poñémolo dentro do setup porque queremos que se execute unha soa vez.
O pulsador está conectado no pin analóxico A7 en pull-up. Os valores que nos pode dar son 0 cando está premido e cerca de 1023 cando non. A instrución while fai que agardemos mentres se cumpra que o pulsador está desactivado.
Tal e como están conectados os motores no mClon o motor esquerdo móvese cara adiante cando AIN1=0, e cara atrás cando AIN1=1, e o motor dereito ao revés, móvese cara adiante cando BIN1=1 e cara atŕas cando BIN1=0. Pode ser moi lioso programar o movemento dando estes valores, así que imos crear unhas funcións para cada un dos motores de maneira que poidamos controlalos de forma sinxela.
Para indicar o sentido de xiro escribimos 1 cando queremos ir cara adiante e -1 cara atrás
Para indicar a velocidade introducimos un valor de 0 a 255
// motor esquerdo m1 void m1(int sentido, int velocidade) { if (sentido > 0){ digitalWrite(AIN1, 0); } else{ digitalWrite(AIN1, 1); } analogWrite(PWMA, velocidade); } // Motor dereito m2 void m2(int sentido, int velocidade) { if (sentido > 0){ digitalWrite(BIN1, 1); } else{ digitalWrite(BIN1, 0); } analogWrite(PWMB, velocidade); }
Dentro do bucle loop() escribimos todas as instrucións que queremos que se executen continuamente.
Por exemplo, se queremos que o robot se mova cara adiante durante 1 segundo a velocidade media, cara atrás outro segundo e así indefinidamente invocaremos as funcións m1 e m2 dos motores da seguinte maneira:
void loop() { //avanza 1 segundo m1(1, 125); m2(1, 125); delay(1000); //retrocede 1 segundo m1(-1, 125); m2(-1, 125); delay(1000); }
O programa completo quedaría así:
// Declaración de variables: const int PWMA = 6; // Pins motor esquerdo const int AIN1 =7; const int PWMB = 5; // Pins motor dereito const int BIN1 =4; // Configuración: void setup(){ pinMode( PWMA, OUTPUT); // Configuramos os pins pinMode( AIN1, OUTPUT); pinMode( PWMB, OUTPUT); pinMode( BIN1, OUTPUT); while(analogRead(A7)>100); // agardamos mentres non se pulse o botón } /***** Funcións: *****/ // sentido: adiante: 1, atrás: -1 // velocidade: 0 -> 255 // motor esquerdo m1 void m1(int sentido, int velocidade) { if (sentido > 0){ digitalWrite(AIN1, 0); } else{ digitalWrite(AIN1, 1); } analogWrite(PWMA, velocidade); } // Motor dereito m2 void m2(int sentido, int velocidade) { if (sentido > 0){ digitalWrite(BIN1, 1); } else{ digitalWrite(BIN1, 0); } analogWrite(PWMB, velocidade); } /***** Bucle *****/ void loop() { //avanza 1 segundo m1(1, 100); m2(1, 100); delay(1000); //retrocede 1 segundo m1(-1, 100); m2(-1, 100); delay(1000); }
Agora falta que lle indiques que xire manténdose na súa posición (un motor vai cara adiante e outro cara atrás) ou que avance xirando (unha roda vai a máis velocidade cá outra). Deberás completar o programa anterior para facer as seguintes prácticas.
1. Unha nova función: Cambia as funcións dos motores de xeito que poidamos programalos executando as instrucións m1(100); para que o motor esquerdo se mova cara adiante e m1(-100); para que se mova cara atrás. Fai o mesmo coa función do motor dereito.
2. Unha función para os dous motores: Cambia as funcións de xeito que con unha única instrución controlemos o movemento de ambos motores. Por exemplo, ao escribir m(100, -100); o motor esquerdo avanza e o motor dereito retrocede a velocidade 100.
3. Límites: Os sinais PWM só poden tomar valores desde 0 a 255. Engade o necesario para que se alguén escribe un valor maior, por exemplo m1(500); a instrución velocidade tome o valor 255.
4. Movemento: Deseña un programa que execute as seguintes accións consecutivas:
Cando prememos no pulsador:
O robot avanza durante 1 segundo.
O robot xira 1 segundo cara á esquerda
O robot retrocede durante 1 segundo
O robot xira 1 segundo cara á dereita
O robot avanza xirando cara á esquerda durante 2 segundos
O robot avanza xirando cara á dereita durante 2 segundos
Sitúa o robot a 15 cm dunha lata de refresco. Debes programar os movementos necesarios para que a rodee sen tocala e, unha vez rodeada, avance na mesma dirección que tiña inicialmente.
Xira cara á esquerda -> avanza -> avanza xirando cara á dereita -> xira cara á esquerda -> avanza, … Controla as velocidades dos motores e os tempos para que o robot rodee a lata sen chocar contra ela.
O control dos motores
Os sensores IR de liña
O sensor de luz ou LDR
Matriz de leds 8×8
O robot en movemento
Seguir unha liña no chan
Programación co IDE de arduino
O IDE de Arduino
Probas de funcionamento IDE
O control dos motores
Luces de cores – IDE
Texto, figuras e debuxos
Ver a política de privacidade
O teu estado actual: Non se deu consentimento. Xestiona o teu consentimento.
Proxecto de A Industriosa
Copyright © 2022 mClon Robot. Todos os dereitos reservados.
Tema: ColorMag por ThemeGrill. Funciona con WordPress.
Usamos cookies para o correcto funcionamento do sitio web. Ao facer clic en Aceptar, aceptas o uso das cookies necesarias. Podes xestionar as cookies que queres activar.
Ler máis - Cookie Settings
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
NID cookie, set by Google, is used for advertising purposes; to limit the number of times the user sees an ad, to mute unwanted ads, and to measure the effectiveness of ads.
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.