logiciel pour creer un code+ premier "projet"

salut a tous
après quelque misères pour dialoguer entre ma mega et mon pc, je me lance dans les codes... XD
je suis tombé sur une page d'un blog en anglais (moi et l'anglais, ca fait...10!) qui présente un logiciel " graphique" qui permettez de créer les codes en schématisant l'arduino, les shields et au qu'elles il faillait reliez les "fils". le problème c'est que je n'est pas comprit comment ça fonctionné et plus moyen de retrouvez ca!
si vous aviez des info, je suis preneur!

ensuite, j'ai un petit projet de calcul de la vitesse d'un train (en modélise) avec retranscription de cette vitesse sur un écran.
donc pour mettre a bien ce projet, j'ai l'arduino, l'écran, et l'idée 8)
en fait, je disposerait deux ils (interrupteur a lame souple) a une distance X l'un de l'autre.
ensuite, en fonction du temps écoulés entre ces deux ils, a l'aide de la formule V (km/h)=3.687D (la distance entre les ils en mm)/T (temps écoulés entre les deux declenchement d'ils en milli seconde), j'obtiens donc la vitesse de mon train.
le truc c'est que je suis novice dans la programmation et je ne vois pas trop comment mettre en place ce code... si vous savez m'aidez, je vous en remercie d'avance

Tu parles certainement de fritzing

pour l'utilisation, regarde la video !
oliV

j'ai validé trop vite....

pour la programmation, Jean François je crois a fait un générateur de code arduino sur une page web pas mal du tout ! tu entres tous tes paramètres et le soft fait ton code ! je recherche l'adresse.....

regarde ici:
http://www.mon-club-elec.fr/pmwiki_generateur_code/pmwiki.php?n=Main.HomePage
en fait ce n'est peu être pas de JF... enfin bon il avait poster le lien il y a peu...
Bon amusement

oliV

Ça peut être: http://blog.minibloq.org/

Bonjour,

@fdufnews: Effectivement c'est surement de minibloq qu'il devait vouloir parler (c'est le seul générateur de code arduino de ce type).

Pour avoir testé minibloq durant ses débuts et plus récemment sa version beta, je peut t'assurer que c'est un trés bon logiciel, trés complet, bientôt open source (quelques modif au code source et normalement il sera release au publique) mais pour faire ce que tu dit vouloir faire je te le conseille pas.

Faire de la programmation sous forme de "blocs" revient à faire ce qui existai depuis longtemps mais sous une forme un peu différente: du flowcode.
Pour un débutant voulant faire clignoter un led c'est tiptop, pour faire des calculs complexe ou de la gestion d'interruptions & co c'est totalement inutilisable.
Apprendre à coder en c++ "arduino" demande trés peu de temps, bien moins que ce qu'il faudrait pour comprendre comment faire ce que tu souhaite sous minibloq :wink:

Sans vouloir faire de pub ou autre j'ai fait des vidéos tutoriels sur mon blog, en 2h si tu est motivé tu peut te lancer dans le c++ arduino :wink:
Et si les vidéos c'est pas ton truc tu peut toujours lire le "guide arduino" il y a une sous partie "tutoriels" qui devrait te permettre de débuter sans problème.

ok merci!!!
pour mon compteur de vitesse, auriez vous un debut de piste pour le programme?

salut a tous
pour minibloq, j'ai effectivement laissé tomber....

sinon, j'ai un peu avancé sur mon projet de calcul de vitesse pour mes train.

je me sert de deux ils, de l'arduino et d'un lcd basique.
j'ai trouvé un code qui convient, il s'agit d'un chronometre qui se met en marche lors de la premiere impulsion et se coupe a la seconde impulsion. il m'affiche le temps ecoulé sur l'ecran.
jusque la tout va bien.
j'ai essayé d'incorporé au code ma formule de calcul et de faire apparaitre en deuxieme ligne de l'ecran le resultat de ce calcul. mais la je seche totalement
voila le code

*/

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

int ledPin = 13;                    // LED connected to digital pin 13
int buttonPin = 2;                  // button on pin 2

int value = LOW;                    // previous value of the LED
int buttonState;                    // variable to store button state
int lastButtonState;                // variable to store last button state
int blinking;                       // condition for blinking - timer is timing
int frameRate = 100;                // the frame rate (frames per second) at which the stopwatch runs - Change to suit
long interval = (1000/frameRate);   // blink interval
long previousMillis = 0;            // variable to store last time LED was updated
long startTime ;                    // start time for stop watch
long elapsedTime ;                  // elapsed time for stop watch
int fractional;                     // variable used to store fractional part of Frames
int fractionalSecs;                 // variable used to store fractional part of Seconds
int fractionalMins;                 // variable used to store fractional part of Minutes
int elapsedFrames;                  // elapsed frames for stop watch
int elapsedSeconds;                 // elapsed seconds for stop watch
int elapsedMinutes;                 // elapsed Minutes for stop watch
char buf[10];                       // string buffer for itoa function

void setup()
{
  lcd.begin(16, 2);                // intialise the LCD.
  pinMode(ledPin, OUTPUT);         // sets the digital pin as output
  pinMode(buttonPin, INPUT);       // not really necessary, pins default to INPUT anyway
  digitalWrite(buttonPin, HIGH);   // turn on pullup resistors. Wire button so that press shorts pin to ground.
}

void loop(){
  digitalWrite(ledPin, LOW);            // Initiate LED and Step Pin States

  buttonState = digitalRead(buttonPin); // Check for button press, read the button state and store

// check for a high to low transition if true then found a new button press while clock is not running - start the clock    
   if (buttonState == LOW && lastButtonState == HIGH  &&  blinking == false){
    startTime = millis();                               // store the start time
      blinking = true;                                  // turn on blinking while timing
      delay(10);                                         // short delay to debounce switch
      lastButtonState = buttonState;                    // store buttonState in lastButtonState, to compare next time 
   }

// check for a high to low transition if true then found a new button press while clock is running - stop the clock and report
   else if (buttonState == LOW && lastButtonState == HIGH && blinking == true){
   blinking = false;                                    // turn off blinking, all done timing
   lastButtonState = buttonState;                       // store buttonState in lastButtonState, to compare next time

// Routine to report elapsed time            
   elapsedTime =   millis() - startTime;                // store elapsed time
   elapsedMinutes = (elapsedTime / 60000L);
   elapsedSeconds = (elapsedTime / 1000L);              // divide by 1000 to convert to seconds - then cast to an int to print
   elapsedFrames = (elapsedTime / interval);            // divide by 100 to convert to 1/100 of a second - then cast to an int to print
   fractional = (int)(elapsedFrames % frameRate);       // use modulo operator to get fractional part of 100 Seconds
   fractionalSecs = (int)(elapsedSeconds % 60L);        // use modulo operator to get fractional part of 60 Seconds
   fractionalMins = (int)(elapsedMinutes % 60L);        // use modulo operator to get fractional part of 60 Minutes
   lcd.clear();                                         // clear the LDC

 if (fractionalMins < 10){                            // pad in leading zeros
      lcd.print("0");                                 // add a zero
      }

    lcd.print(itoa(fractionalMins, buf, 10));       // convert the int to a string and print a fractional part of 60 Minutes to the LCD
      lcd.print(":");                                 //print a colan. 

 if (fractionalSecs < 10){                            // pad in leading zeros
      lcd.print("0");                                 // add a zero
      }

 lcd.print(itoa(fractionalSecs, buf, 10));          // convert the int to a string and print a fractional part of 60 Seconds to the LCD
   lcd.print(":");                                    //print a colan. 

 if (fractional < 10){                                // pad in leading zeros 
      lcd.print("0");                                 // add a zero
      }     

 lcd.print(itoa(fractional, buf, 10));              // convert the int to a string and print a fractional part of 25 Frames to the LCD
   }

 else{
      lastButtonState = buttonState;                  // store buttonState in lastButtonState, to compare next time
   }

// run commands at the specified time interval
// blink routine - blink the LED while timing
// check to see if it's time to blink the LED; that is, the difference
// between the current time and last time we blinked the LED is larger than
// the interval at which we want to blink the LED.

 if ( (millis() - previousMillis > interval) ) {

    if (blinking == true){
       previousMillis = millis();                    // remember the last time we blinked the LED

       digitalWrite(ledPin, HIGH);                   // Pulse the LED for Visual Feedback

       elapsedTime =   millis() - startTime;         // store elapsed time
         elapsedMinutes = (elapsedTime / 60000L);      // divide by 60000 to convert to minutes - then cast to an int to print
         elapsedSeconds = (elapsedTime / 1000L);       // divide by 1000 to convert to seconds - then cast to an int to print
         elapsedFrames = (elapsedTime / interval);     // divide by 40 to convert to 1/25 of a second - then cast to an int to print
         fractional = (int)(elapsedFrames % frameRate);// use modulo operator to get fractional part of 25 Frames
         fractionalSecs = (int)(elapsedSeconds % 60L); // use modulo operator to get fractional part of 60 Seconds
         fractionalMins = (int)(elapsedMinutes % 60L); // use modulo operator to get fractional part of 60 Minutes
         lcd.clear();                                  // clear the LDC

       if (fractionalMins < 10){                     // pad in leading zeros
         lcd.print("0");                             // add a zero
         }

       lcd.print(itoa(fractionalMins, buf, 10));   // convert the int to a string and print a fractional part of 60 Minutes to the LCD
         lcd.print(":");                             //print a colan. 

       if (fractionalSecs < 10){                     // pad in leading zeros 
         lcd.print("0");                             // add a zero
         }

       lcd.print(itoa(fractionalSecs, buf, 10));   // convert the int to a string and print a fractional part of 60 Seconds to the LCD
         lcd.print(":");                             //print a colan. 

       if (fractional < 10){                         // pad in leading zeros 
         lcd.print("0");                             // add a zero
         }
          lcd.print(itoa((fractional), buf, 10));  // convert the int to a string and print a fractional part of 25 Frames to the LCD
         }

    else{
          digitalWrite(ledPin, LOW);                 // turn off LED when not blinking 
          }
 }

}

si je ne me trompe pas, le temps ecoulé est stocké dans la variable elapsedTime
donc il faut que je fasse V=elapsedTime 3.6100*87

mes questions sont
le temps est il vraiment bien stocké dans elapsedTime ?
ou mettre la formule de calcul, faut il declaré V?
comment faire apparaitre la vitesse en deuxieme ligne de l'ecran?

le code et le montage viennent de :http://arduinoprojects101.com/arduino-stopwatch/

merci d'avance pour votre aide

salut,

Oui elapsedTime est le temps écoulé en millisecondes
il faut déclarer V tu place float V; avec les autre variables.

Tu place ta formule juste après le calcul de elapsedTime
Et pour écrire sur la 2em ligne du LCD: utilise lcd.setCursor(0,1);
a+

merci olivbout!!!! ca fonctionne parfaitement!

j'ai mit en place mon "projet" et la j'ai un soucis, j'ai du rebond....
j'aimerai savoir si il ya un moyen de supprimé ce soucis en limitant le nombre d'impulsion pensant un temps donné?
merci d'avance!