Show Posts
Pages: [1] 2 3 ... 6
1  International / Français / Re: Débuter dans les microcontrôleurs ? on: March 09, 2013, 12:50:30 pm
Vous validez ?   smiley-grin

2  International / Français / Re: Débuter dans les microcontrôleurs ? on: March 09, 2013, 05:17:22 am
J'ai déjà vu cette solution, et elle me convient presque parfaitement, ou peut être totalement: peut on aussi programmer des atmels plus gros de la même façon ?
3  International / Français / Re: Débuter dans les microcontrôleurs ? on: March 09, 2013, 04:33:44 am
Au risque d'être passé à côté de l'info, je vois mal où est le rapport avec une pompe à vide... ^^'
[edit] je précise que je ne suis pas non plus un expert de l'arduino...
4  International / Français / Re: Débuter dans les microcontrôleurs ? on: March 09, 2013, 04:12:38 am


 smiley-twist smiley-twist


Merci pour les réponses, mais ça va pas être possible avec ma carte comme vous pouvez le voir... et puis utiliser un atmega pour tous ses projets c'est un peu du gachi non ? Avec la carte de développement que j'aimerai faire, on pourrait aussi programmer des attinys, pour des plus petits projets !
5  International / Français / Débuter dans les microcontrôleurs ? on: March 08, 2013, 04:28:02 pm
Salut à tous !  smiley

Après avoir commencé l’électronique avec arduino, j'aimerai faire en sorte que mes projets deviennent autonomes, sans pour autant acheter une nouvelle carte arduino à chaque fois. Du coup, faut que je passe aux microcontrôleurs ! Je sais pas trop si ça entre dans le cadre du forum mais bon...
De ce que j'ai compris, il y a principalement deux grandes familles: les PIC et les Atmel. C'est sur le second que j'aimerai me lancer. Mon objectif est de faire ça: http://geekboy.it/videos/how-to-build-an-avr-development-board

Du coup, je me pose la question suivante: de quel matériel vais-je avoir besoin ? Après quelques recherches, je découvre qu'il faut un programmeur ISP,en avez vous un à me conseiller ? (j'ai trouvé celui ci: http://www.myavr.fr/fr/programmateurs/74-mysmartusb-light.html pas trop cher).

J'ai vu qu'on pouvait aussi utiliser l'arduino (j'ai une Uno rev3) comme programmeur, mais du peu que j'ai vu ça a l'air un chouilla galère et j'ai pas vraiment la motive de me prendre la tête là dessus si pour 15€ je peux avoir un truc tout fait.

Enfin, quel logiciel dois-je utiliser pour programmer un atmel ? j'ai lu des choses comme AVRDude, AtmelStudio.... je m'y perd un peu.

Si vous avez de bons tutos qui expliquent un peu le fonctionnement d'un microcontrôleur, je suis également preneur !

Merci pour votre attention
6  International / Français / Re: Problème: avrdude: stk500_getsync(): not in sync: resp=0x00 on: July 05, 2012, 04:55:06 pm
J'ai du mal a croire que ça vienne de là: il n'y a que sur le logiciel arduino que j'ai rencontré des problèmes

(mon lecteur disquette chante a présent  smiley-cool )
7  International / Français / Re: Problème: avrdude: stk500_getsync(): not in sync: resp=0x00 on: July 05, 2012, 02:59:42 pm
En effet, triangle jaune sur l'arduino. Clique droit -> mettre à jour les pilotes -> sur mon pc -> dossier de l'arduino -> success !
Je tente d'uploader le code -> double success !

Cependant j'ai toujours de lourds bugs graphiques qui rendent le logiciel quasi inutilisable....

Merci beaucoup pour ton aide smiley-wink Si tu as une idée pour mon nouveau problème... je suis preneur !
8  International / Français / Re: Problème: avrdude: stk500_getsync(): not in sync: resp=0x00 on: July 05, 2012, 07:19:23 am
Mince, en fait ça doit être ma souris logitech. Et je viens de voir que quand je branche ou débranche l'arduino, rien ne change sur l'interface :/ Enfin, c'est comme si il n'était pas détecté... (je n'ai que 2 périphériques reconnus par le logiciel et le nombre ne change pas quand je branche ou débranche).
9  International / Français / Re: Problème: avrdude: stk500_getsync(): not in sync: resp=0x00 on: July 04, 2012, 03:15:48 pm
ça ?:
10  International / Français / Re: Problème: avrdude: stk500_getsync(): not in sync: resp=0x00 on: July 02, 2012, 11:22:32 am
Yep, la carte est débranchée de tout câble.
11  International / Français / Re: Problème: avrdude: stk500_getsync(): not in sync: resp=0x00 on: July 02, 2012, 06:58:34 am
Voir mon edit du dessus ^^'
12  International / Français / Re: Problème: avrdude: stk500_getsync(): not in sync: resp=0x00 on: July 02, 2012, 06:43:21 am
Bah, j'ai que le choix du port com1, donc je pense pas m'être trompé... Et j'ai essayé sur mon ancien pc -> pas de soucis. Donc ça doit bien venir de celui ci, et il doit pas reconnaître ma carte (même en la débranchant, le menu "Port série" ne se grise pas).
J'ai un autre souci: je ne sais pas si ça vient du fait que le pc est neuf et que j'ai oublié d'installer un truc, mais j'ai de graves problèmes graphiques avec le logiciel arduino ! Quand je bouge ma souris ou que j'écris quelques lignes, voilà ce qui arrive:



ça doit venir du java car ça me fait pas ça dans les autres logiciels, mais je vois pas ce que j'ai fait/pas fait pour en arriver là...

[edit] Avec le gestionnaire de périphériques, j'ai essayé de mettre a jour le pilote du port com1 avec les drivers du dossier arduino mais ça me dit qu'il est déjà a jour. De plus, quand je connecte ou déconnecte la carte, il n'y a que com1 dans l'éditeur (que la carte soit branchée ou non, il y a le com1).
13  International / Français / Re: Problème: avrdude: stk500_getsync(): not in sync: resp=0x00 on: July 02, 2012, 05:13:05 am
Euh, windows 7 64bits, le programme est le suivant (je ne l'ai pas lu, dans le tuto on demande de le mettre sur la carte, c'est ce que je me contente de faire):

Code:
#include <TimerOne.h>

boolean firstRun = true; // Used for one-run-only stuffs;

//First pin being used for floppies, and the last pin.  Used for looping over all pins.
const byte FIRST_PIN = 2;
const byte PIN_MAX = 17;
#define RESOLUTION 40 //Microsecond resolution for notes


/*NOTE: Many of the arrays below contain unused indexes.  This is
to prevent the Arduino from having to convert a pin input to an alternate
array index and save as many cycles as possible.  In other words information
for pin 2 will be stored in index 2, and information for pin 4 will be
stored in index 4.*/


/*An array of maximum track positions for each step-control pin.  Even pins
are used for control, so only even numbers need a value here.  3.5" Floppies have
80 tracks, 5.25" have 50.  These should be doubled, because each tick is now
half a position (use 158 and 98).
*/
byte MAX_POSITION[] = {
  0,0,158,0,158,0,158,0,158,0,158,0,158,0,158,0,158,0};
 
//Array to track the current position of each floppy head.  (Only even indexes (i.e. 2,4,6...) are used)
byte currentPosition[] = {
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

/*Array to keep track of state of each pin.  Even indexes track the control-pins for toggle purposes.  Odd indexes
track direction-pins.  LOW = forward, HIGH=reverse
*/
int currentState[] = {
  0,0,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW
};
 
//Current period assigned to each pin.  0 = off.  Each period is of the length specified by the RESOLUTION
//variable above.  i.e. A period of 10 is (RESOLUTION x 10) microseconds long.
unsigned int currentPeriod[] = {
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};

//Current tick
unsigned int currentTick[] = {
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};



//Setup pins (Even-odd pairs for step control and direction
void setup(){
  pinMode(13, OUTPUT);// Pin 13 has an LED connected on most Arduino boards
  pinMode(2, OUTPUT); // Step control 1
  pinMode(3, OUTPUT); // Direction 1
  pinMode(4, OUTPUT); // Step control 2
  pinMode(5, OUTPUT); // Direction 2
  pinMode(6, OUTPUT); // Step control 3
  pinMode(7, OUTPUT); // Direction 3
  pinMode(8, OUTPUT); // Step control 4
  pinMode(9, OUTPUT); // Direction 4
  pinMode(10, OUTPUT); // Step control 5
  pinMode(11, OUTPUT); // Direction 5
  pinMode(12, OUTPUT); // Step control 6
  pinMode(13, OUTPUT); // Direction 6
  pinMode(14, OUTPUT); // Step control 7
  pinMode(15, OUTPUT); // Direction 7
  pinMode(16, OUTPUT); // Step control 8
  pinMode(17, OUTPUT); // Direction 8

  Timer1.initialize(RESOLUTION); // Set up a timer at the defined resolution
  Timer1.attachInterrupt(tick); // Attach the tick function

  Serial.begin(9600);
}


void loop(){
 
  //The first loop, reset all the drives, and wait 2 seconds...
  if (firstRun)
  {
    firstRun = false;
    resetAll();
    delay(2000);
  }

  //Only read if we have
  if (Serial.available() > 2){
    //Watch for special 100-message to reset the drives
    if (Serial.peek() == 100) {
      resetAll();
      //Flush any remaining messages.
      while(Serial.available() > 0){
        Serial.read();
      }
    }
    else{
      currentPeriod[Serial.read()] = (Serial.read() << 8) | Serial.read();
    }
  }
}


/*
Called by the timer inturrupt at the specified resolution.
*/
void tick()
{
  /*
  If there is a period set for control pin 2, count the number of
  ticks that pass, and toggle the pin if the current period is reached.
  */
  if (currentPeriod[2]>0){
    currentTick[2]++;
    if (currentTick[2] >= currentPeriod[2]){
      togglePin(2,3);
      currentTick[2]=0;
    }
  }
  if (currentPeriod[4]>0){
    currentTick[4]++;
    if (currentTick[4] >= currentPeriod[4]){
      togglePin(4,5);
      currentTick[4]=0;
    }
  }
  if (currentPeriod[6]>0){
    currentTick[6]++;
    if (currentTick[6] >= currentPeriod[6]){
      togglePin(6,7);
      currentTick[6]=0;
    }
  }
  if (currentPeriod[8]>0){
    currentTick[8]++;
    if (currentTick[8] >= currentPeriod[8]){
      togglePin(8,9);
      currentTick[8]=0;
    }
  }
  if (currentPeriod[10]>0){
    currentTick[10]++;
    if (currentTick[10] >= currentPeriod[10]){
      togglePin(10,11);
      currentTick[10]=0;
    }
  }
  if (currentPeriod[12]>0){
    currentTick[12]++;
    if (currentTick[12] >= currentPeriod[12]){
      togglePin(12,13);
      currentTick[12]=0;
    }
  }
  if (currentPeriod[14]>0){
    currentTick[14]++;
    if (currentTick[14] >= currentPeriod[14]){
      togglePin(14,15);
      currentTick[14]=0;
    }
  }
  if (currentPeriod[16]>0){
    currentTick[16]++;
    if (currentTick[16] >= currentPeriod[16]){
      togglePin(16,17);
      currentTick[16]=0;
    }
  }
 
}

void togglePin(byte pin, byte direction_pin) {
 
  //Switch directions if end has been reached
  if (currentPosition[pin] >= MAX_POSITION[pin]) {
    currentState[direction_pin] = HIGH;
    digitalWrite(direction_pin,HIGH);
  }
  else if (currentPosition[pin] <= 0) {
    currentState[direction_pin] = LOW;
    digitalWrite(direction_pin,LOW);
  }
 
    //Update currentPosition
  if (currentState[direction_pin] == HIGH){
    currentPosition[pin]--;
  }
  else {
    currentPosition[pin]++;
  }
 
  //Pulse the control pin
  digitalWrite(pin,currentState[pin]);
  currentState[pin] = ~currentState[pin];
}


//
//// UTILITY FUNCTIONS
//

//Not used now, but good for debugging...
void blinkLED(){
  digitalWrite(13, HIGH); // set the LED on
  delay(250);              // wait for a second
  digitalWrite(13, LOW);
}

//For a given controller pin, runs the read-head all the way back to 0
void reset(byte pin)
{
  digitalWrite(pin+1,HIGH); // Go in reverse
  for (byte s=0;s<MAX_POSITION[pin];s+=2){ //Half max because we're stepping directly (no toggle)
    digitalWrite(pin,HIGH);
    digitalWrite(pin,LOW);
    delay(5);
  }
  currentPosition[pin] = 0; // We're reset.
  digitalWrite(pin+1,LOW);
  currentPosition[pin+1] = 0; // Ready to go forward.
}

//Resets all the pins
void resetAll(){
 
  // Old one-at-a-time reset
  //for (byte p=FIRST_PIN;p<=PIN_MAX;p+=2){
  //  reset(p);
  //}
 
  // New all-at-once reset
  for (byte s=0;s<80;s++){ // For max drive's position
    for (byte p=FIRST_PIN;p<=PIN_MAX;p+=2){
      digitalWrite(p+1,HIGH); // Go in reverse
      digitalWrite(p,HIGH);
      digitalWrite(p,LOW);
    }
    delay(5);
  }
 
  for (byte p=FIRST_PIN;p<=PIN_MAX;p+=2){
    currentPosition[p] = 0; // We're reset.
    digitalWrite(p+1,LOW);
    currentState[p+1] = 0; // Ready to go forward.
  }
 
}

Et comme j'ai un nouveau pc, je vais tester sur l'ancien voir si j'ai le même problème.
Dans le gestionnaire des périphériques, le com1 est reconnu comme cela:
Code:
Emplacement: sur Intel(R) Z68 Express Chipset Family LPC Interface Controller - 1C44

Voilà voilà
14  International / Français / Problème: avrdude: stk500_getsync(): not in sync: resp=0x00 on: July 01, 2012, 05:53:35 pm
Hello, après de longs mois sans toucher à ma carte arduino (mon précédent projet étant un avertisseur de mail), j'ai décider de m'y remettre pour faire de la musique avec un lecteur disquette. J'ai suivi les instructions de cette vidéo: http://www.youtube.com/watch?feature=player_embedded&v=w6tuMn5sPyM avec une aide pour l'installation logicielle ici: http://www.youtube.com/watch?src_vid=w6tuMn5sPyM&v=hiE9OaTB-eU&annotation_id=annotation_920210&feature=iv

Le problème, c'est qu'au moment de transférer le code sur la carte arduino, enfin, à la fin du transfert, j'ai ce message qui s'affiche:
Code:
avrdude: stk500_getsync(): not in sync: resp=0x00

Bien sûr, rien ne fonctionne par la suite (je veux dire pour mon montage)  smiley-cry.
Je possède une arduino uno SMD R2 et j'ai utilisé la version 1.0.1 du logiciel arduino. Voilà, si vous pouviez m'aider, je vous en serai reconnaissant  smiley
15  International / Français / Re: Problème communication port serial. on: January 28, 2012, 08:57:23 am
Me revoilà ! A force de chercher, on finit par trouver !

Il se trouve en fait que la lib pyserial installée pour que python communique avec arduino, reset la carte quand on ouvre le port où elle est connectée, ainsi que lorsqu'on ferme le port. Bilan: le statut allumé ou éteint de la led est altéré (enfin, lisez ceci vous comprendrez peut être mieux ce que je veux dire: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1274205532 )

Deux solutions s'offrent à nous:

- mettre un time.sleep(2) après l'ouverture du port ET ne pas fermé le port à la fin du script;
- se rendre dans /Lib/site-packages/serial et modifier la ligne du fichier serialWin32.py
Code:
self._dtrState = win32.DTR_CONTROL_ENABLE

par

Code:
self._dtrState = win32.DTR_CONTROL_DISABLE

et vous n'aurez pas besoin du time.sleep ni de retirer le ser.close() (tout bénef en somme !).

Allé, ptit récap final des codes utilisés:

script.py :
Code:
import serial, sys, feedparser, time
#Settings - Change these to match your account details
USERNAME="xxxxx"
PASSWORD="yyyyy"
PROTO="https://"
SERVER="mail.google.com"
PATH="/gmail/feed/atom"
SERIALPORT = "COM3" # Change this to your serial port!
# Set up serial port
try:
ser = serial.Serial(SERIALPORT, 9600)
except serial.SerialException:
print "no device connected - exiting"
sys.exit()

newmails = int(feedparser.parse(PROTO + USERNAME + ":" + PASSWORD + "@" + SERVER + PATH)["feed"]["fullcount"])
print newmails

# Output data to serial port
if newmails > 0:
ser.write('m')
print "some mail"
else:
ser.write('n')
print "no mail"
#print data to terminal

time.sleep(1)

reponse = ser.readline()
if reponse:
        print reponse
else:
        pass

# Close serial port
ser.close()

sketch:
Code:
// led wired + to pin 12, resistor to positive +5v

#define outPin 11

int val;

void setup()
{
 pinMode(outPin, OUTPUT); // sets the digital pin as output
 Serial.begin(9600);
 Serial.flush();
}

void loop()
{
 // Read from serial port
 if (Serial.available()) {
   val = Serial.read();
   delay(2);
   Serial.println(val);

   if (val == 'm')
   {
     digitalWrite(outPin, HIGH);
   }

   else if (val == 'n')
   {
     digitalWrite(outPin, LOW);
   }
 }

  
}

Merci à tous, je vous tiens au courant de la suite !


Edit de Jean-François : mot de passe et username enlevé dans le script Py

[EDIT] Oh... merci ^^ La dernière fois je l'avais vu, mais là j'ai pas fait gaffe...
Pages: [1] 2 3 ... 6