Pages: [1]   Go Down
Author Topic: programmation atmega 328 en chenillard  (Read 1835 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour a tous
je voudrai savoir en premiere chose si cela est possible de programmé un processeur ATMEGA328 16 PU avec l'arduino?
et en deuxieme chose je recherche une aide pour mon chenillard 8 led mais je voudrai y installé un variateur de vitesse
aurai t'il un tutoriel avec image de branchement etant novice a la matiere
milles merci d'avance pour vos réponses
Flippers
« Last Edit: December 01, 2011, 07:41:52 am by Jean-François » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Programmer un ATmega328p avec l'IDE arduino est tout à fait réalisable du moment que celui ci peut tourner à 8 ou 16MHz (ce qui est le cas ici).
Pour ce faire il faut "bootloader" l'ATmega en utilisant, soit un programmateur d'AVR, soit une puce FTDI FT232 en "bit bang", soit un port RS-232 + un petit montage (ponyprog) ou tout simplement une carte arduino.

Je te conseil de regarder ce topic de Jean-Marie qui donne tous les détails : http://arduino.cc/forum/index.php/topic,78754.0.html
Ainsi que le tutoriel "breadboard" : http://arduino.cc/en/Tutorial/ArduinoToBreadboard
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

milles merci de ta réponse voila j'ai déja réponse pour le sujet programmation il me reste a trouver ou optenir sur ce post une personnes qui pourrai me donner un tuto ou du moins une image plan de cette réalisation chenillard avec variateur
merci a toi
Logged

Belgique - Arlon
Offline Offline
Full Member
***
Karma: 0
Posts: 172
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello Flippers,

Je ne suis vraiment pas spécialiste en langage arduino mais ta demande me paraît assez simple.

Voici quelques indications.
Tu veux un chenillard de 8 leds. Coup de chance ! cela correspond tout juste aux 8 bits d'un byte et aux 8 sorties d'un Port.
Avec des leds à faible consommation, tu peux les alimenter directement par les pattes de l'atmega, sans passer par des transistors. Donc, tu raccordes chaque anode de led à une patte d'un port et la cathode à la masse par l'intermédiaire d'une résistance (470 Ohms). (une résistance par led).

Pour la programmation, tu crées une variable de type byte dont chaque bit représente une led. Lorsque le bit sera à 1, la led correspondante s'allumera. Dans le setup, tu commences par allumer la ou les leds que tu veux avec l'instruction bitSet(). Ensuite, dans une boucle, tu fais avancer ou reculer tes leds avec l'opérateur >> ou <<. Dans ces décalages, le bit extrême est chaque fois perdu. Donc, il faut inclure une ligne de programme permettant de recopier le bit extrême à l'autre bout de la variable.
Ne pas oublier d'inclure dans la boucle un "delay" sinon tu ne verra rien bouger. Pour faire varier la vitesse du chenillard, il suffit de modifier le temps du delay en fonction de l'appui sur un bouton + et un bouton -.

Ah oui, en fin de boucle, n'oublie pas d'écrire la variable sur le port choisi, sinon tu ne verras rien non plus. smiley-lol
Logged

Amicalement, Jean-Marie

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci a toi jean marie
n'aurai tu pas le code et le plan car comme citez très novice
merci
Logged

Belgique - Arlon
Offline Offline
Full Member
***
Karma: 0
Posts: 172
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour le plan, je me suis amusé à faire une petite composition d'images car si tu es vraiment novice, je suppose qu'un schéma Eagle est aussi clair que du chinois.



Pour le programme, comme je ne connais pas le langage arduino, je suis sûr que je ferais des erreurs de programmation, surtout sans avoir le montage pour tester. Et puis, si tu es novice, tu risque de le rester longtemps si tu ne mets pas toi-même la main à la pâte.

Je te propose donc de démarrer du programme BLINK que tu peux modifier et tester à ta guise
Logged

Amicalement, Jean-Marie

Belgique - Arlon
Offline Offline
Full Member
***
Karma: 0
Posts: 172
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Petite correction: la longue patte des leds est plutôt à raccorder à l'atmega, sinon la led s'allumera quand tu écriras un 0 sur le bit.

EDIT: Ce n'est peut-être pas mon meilleur jour aujourd'hui ! Ma correction ci-dessus est à mettre à la poubelle. En effet, en regardant bien le dessin, la longue patte des leds (= anode = +) est effectivement raccordée à l'Atmega.
De plus, contrairement à ce que je dis ci-dessus, si on inverse la led elle ne s'allumera pas avec un 0, elle restera simplement définitivement éteinte, quelle que soit la valeur du bit.
« Last Edit: December 01, 2011, 05:18:19 am by Jean-Marie » Logged

Amicalement, Jean-Marie

Strasbourg
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut tu as de trés tuto sur Mon Club Elec, regarde ICI, quand tu auras compris comment ça fonctionne tu pourras l'adapter pour un chenillard....
Tu as aussi un tuto en Anglais ICI, exercice 0.1

Vala A+
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai une grosse remarque par rapport au schéma de Jean-Marie, sur un ATmega sans bootloader le câblage ne poserai pas de probléme, sauf que câbler des leds sur le port série (Rx / Tx - PD0 / PD1) n'est vraiment pas une bonne idée si le bootloader arduino est utilisé !
Je conseil plutôt de câbler les 8 leds sur les broches D2 à D9 et d'utiliser digitalWrite(), sinon le port série va bugger, le bootloader ne répondra plus et il faudra faire toute une manip pour le débloquer et pouvoir re-uploader un nouveau programme.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Belgique - Arlon
Offline Offline
Full Member
***
Karma: 0
Posts: 172
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello Arioch,
Merci pour ces excellents liens

_________________________________________________________________________________________

Hello Skywodd,
Très judicieuse remarque. Le montage que je propose bloque effectivement tout upload par Rx/Tx

Cependant, je viens de terminer les essais. Il n'y a pas beaucoup de manipulation à faire pour pouvoir à nouveau uploader de la manière habituelle (par le Bootloader Arduino). Il suffit de débrancher le raccordement à Rx (c'est-à-dire à DigitalPin 0) pendant l'upload.

En fait, comme Flippers a été sage, je n'ai pas pu résister à l'envie de faire moi-même un essai de programmation. Puisque j'ai aussi envie de me former en langage arduino, pourquoi ne pas commencer par çà.

J'ai donc sorti une de derrière les fagots une vieille plaquette d'expérimentation avec 8 leds et leur résistance et je me suis lancé.

Voici une première mouture:

Code:
/*
Chenillard
Jean-Marie C.
1 décembre 2011
 */
      // DECLARATION DES VARIABLES
      // -------------------------

byte led;
byte temp;
int vitesse = 50;

      // SETUP
      // -----

void setup() {               
  // Le PORTD est choisi pour le chenillard car
  // c'est le seul qui a les 8 bits disponibles   
  DDRD = B11111111;  // Le port D est mis en sortie
  led = B00000011; //on met le bit 0 de led à 1
  // voir http://arduino.cc/fr/Main/PortManipulation
  // A partir de maintenant, plus de communication
  // possible avec le Terminal.

  // REMARQUE : pour flasher le programme, débrancher la led
  // de la Digital Pin 0
  }

      // BOUCLE PRINCIPALE
      // -----------------

void loop() {
  PORTD = led;  // écriture de led sur le PORTD
  delay(vitesse); // Attente de "vitesse" millisecondes
  temp = digitalRead(7); // transfert du bit 7 dans temp
  led = led << 1; // décalage à gauche des bits de led
  led = led | temp; // l'ancien bit 7 est replacé en bit 0
}

Logged

Amicalement, Jean-Marie

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon bien c'est parfait tout cela pour la programmation du AMEGA328 je pense que il est un peu tot pour me lancé la dedans comme ont dit chaque choses en sont temp
bon revenons au chenillard existe t'il juste un code chenillard 8 leds avec variateur de vitesse car pour la programmation je n'ai pas vu de code pour un variateur de vitesse de défillement de l'animation de la séquence
Logged

Strasbourg
Offline Offline
Jr. Member
**
Karma: 0
Posts: 79
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut ben tu peux te servir d'un port Analogique et y brancher un potentiométre, aprés tu peux directement prendre la valeur de la lecture du port analogique et l'intégrer dans un Delay....

Tu prends l'exemple de Tronixstuff (lien du tuto en anglais..), tu cables comme il le fait, tu branche comme ça ton potentiométre de 10K:
          
                |--------- Arduino Analog 0
               ▼
+5V------[[[]]]-------GND
             10K
Et tu up le sketch ci dessous, ou j'ai modifié le delay pour que se soit la valeur lut sur le pin Analogique 0:

Code:
/*
exercise 0.1 - KITT emulator!
Created 02/04/2010

By John Boxall

http://tronixstuff.wordpress.com...

http://wp.me/pQmjR-3i
Blinks LEDs from output pin 2~9 in a forwards<>backward motion

The circuit:
an LED is connected to each output pin from 2 to 8, thence to a 560 ohm resistor, then to ground (pin 4 on the bottom left of the Arduino Duemilanove).

based on an orginal by H. Barragan for the Wiring i/o board

*/

// The setup() method runs once, when the sketch starts

int del;

void setup()

{

// initialize the digital pins as outputs:
// later on there will be easier ways to do this

pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);


del= analogRead(0)


}

// the loop() method repeats indefinitely until you turn off the power

void loop()
{

digitalWrite(2, HIGH);   // turn on LED on pin 2
delay(del);              // wait (length determined by value of 'del')
digitalWrite(2, LOW);    // turn it off

digitalWrite(3, HIGH);   // turn on LED on pin 3
delay(del);              // wait
digitalWrite(3, LOW);    // turn it off

digitalWrite(4, HIGH);   // turn on LED on pin 4
delay(del);              // wait
digitalWrite(4, LOW);    // turn it off

digitalWrite(5, HIGH);   // turn on LED on pin 5
delay(del);              // wait
digitalWrite(5, LOW);    // turn it off

digitalWrite(6, HIGH);   // turn on LED on pin 6
delay(del);              // wait
digitalWrite(6, LOW);    // turn it off

digitalWrite(7, HIGH);   // turn on LED on pin 7
delay(del);              // wait
digitalWrite(7, LOW);    // turn it off

digitalWrite(8, HIGH);   // turn on LED on pin 8
delay(del);              // wait
digitalWrite(8, LOW);    // turn it off

digitalWrite(9, HIGH);   // turn on LED on pin 9
delay(del);              // wait
digitalWrite(9, LOW);    // turn it off

digitalWrite(8, HIGH);   // turn on LED on pin 8
delay(del);              // wait
digitalWrite(8, LOW);    // turn it off

digitalWrite(7, HIGH);   // turn on LED on pin 7
delay(del);              // wait
digitalWrite(7, LOW);    // turn it off

digitalWrite(6, HIGH);   // turn on LED on pin 6
delay(del);              // wait
digitalWrite(6, LOW);    // turn it off

digitalWrite(5, HIGH);   // turn on LED on pin 5
delay(del);              // wait
digitalWrite(5, LOW);    // turn it off

digitalWrite(4, HIGH);   // turn on LED on pin 4
delay(del);              // wait
digitalWrite(4, LOW);    // turn it off

digitalWrite(3, HIGH);   // turn on LED on pin 3
delay(del);              // wait
digitalWrite(3, LOW);    // turn it off

}

Vala A+
« Last Edit: December 02, 2011, 03:09:41 am by Arioch » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

et bien merci a tous je vais tester cela
Logged

Pages: [1]   Go Up
Jump to: