Frein sur tyrolienne

D'accord,
est-il facile d'apprendre ce langage ?

Je vais essayer de faire ça alors, on nous apprend à coder en python et un peu en SQL mais avec 1h par semaine, c'est pas très poussé.

J'utilise surment pas les bons termes :sweat_smile:

Je voulais dire ecrire dans un premier temps quelque chose du genre:

Si le capteur capte une telle distance avec une telle vitesse
alors l'actionneur doit faire ça puis ça

et ensuite le transformer dans un langage (le plus facile à comprendre et à utiliser si possible)

Je suis en prépa Maths physique donc on a très peu d'informatique, on a appris juste à peine le SQL et le python mais mon niveau n'est pas très très élever, j'ai une capacité d'apprentissage donc je peux apprendre d'autres langages, mon problème est surtout un manque de temps. C'est la raison pour laquelle je demande de l'aide.

D'ailleurs je pensais pas que les forum étaient aussi réactifs et chaleureux, je vous en remercie !

Bonjour euge_chvlr

Avec l'environnement Arduino, OUI!
J'y suis bien arrivé, alors que je voyais le C comme une horreur, je suis "formatté" basic :wink:

Mais tu dis préférer le Python, pourquoi pas travailler avec?

Tu peux, éventuellement, demander à ChatGPT ce qu'il pense de ton projet? Je pense qu'il faut apprendre maintenant à utiliser ces outils, vu leur niveau de performances.

Cordialement
jpbbricole

Il n'y pas de réponse par Oui ou Non.
En soit non ce n'est pas facile, mais ce n'est pas pour autant difficile.
C'est comme tout cela dépend de tes capacités et du temps que tu peux investir.

Après si tu sais coder en python, il est relativement simple de passer sur le C++.
Bien qu'il y a des spécificité ce sont des langage de la même famille.

Après dans un Arduino, il y a le langage utilisé(le C++), mais aussi les spécificité d'un microcontrôleur par rapport à un system d'exploitation(Linux, Windows, ...)

Oui c'est possible, cela dépend de ce qui te parle.
Personnellement je trouve ça peut productif, car ce n'est pas automatique et c'est pas si simple de passer d'une phrase à 2,10, 50 lignes de code correspondant.
Je préférais écrire/dessiner un algorigramme.

Tu peux regarder du coté de MicroPython ou CircuitPython.
Sinon peut être serait-il mieux pour toi d'utiliser un raspberry.

Au contraire au vu de leur "faible niveau de performances", il ne faut pas trop espérer de ce coté là.
Par contre il faut effectivement commencer à apprendre à les utiliser.
Et la première chose à apprendre, c'est que le code qu'il te donne est sans aucune garantit et peux être un mélange de code de plusieurs sources, pas forcément cohérent.

J'ai posé la question avec Python comme option, je ne peux estimer la réponse, mais @euge_chvlr le pourra certainement, j'ai questionné avec Arduino comme option, la réponse est tout à fait convaincante.

Vu que:

Le même avec Arduino comme option.
Le programme est ici

Cordialement
jpbbricole

Je reviens sur le post de Terwal.

Si tu es (comme lui) un super codeur, tu peux peut-être te passer d'écrire un algorithme.

Sinon, écrire l'algorithme, la structure du programme, j'espère conditions, les étapes. ..

C'est beaucoup plus facile après pour coder l'algorithme dans un language ou un autre.

Par contre, si tu ne connait pas le code, je ne crois pas que se soit dans ton cas une bonne idée d'avoir recours à une machine qui ferait le boulot à ta place.

Pourquoi tu ne peux pas estimer la réponse.
Il n'y pas de code Python, mais C++. Mais ta question est ouverte entre Arduino(C++) ou Python
La distance est en cm, alors qu'il mesure un voltage. Donc que la distance est indifférente du voltage supporter par le capteur, du voltage supporté par l'Arduino, ainsi que sa définition(10bits, 12bits, ...)
Si @euge_chvlr peut en faire quelque chose, je pense qu'il n'a absolument pas besoin de nous :slight_smile:

On peut conseiller à des gens de se reposer sur ChatGPT pour leur faire un programme non fonctionnel, qu'il ne pourront pas forcément rendre fonctionnel.
Mais inévitablement, on aura des posts de correction de code ChatGPT et le programme pourra avoir plus ou moins de logique en fonction de la question posé.

Ton retour me confirme bien dans mon expérience avec cet outil, j'ai remplacé google, par cet outil et donc l'utilise à longueur de journée :slight_smile:
Il ne faut pas trop espérer de cet outil miracle, surtout pour un débutant, pour te faire rapidement un programme complet fonctionnel alors que tu ne sais pas programmer.
Et il n'ai pas encore près à remplacer des hordes de développeur.

Bonjour terwal

J'ai corrigé le lien, je me suis "brouté" du fait qu'il y avait plusieurs pages dans le chat.
Le programme est ici.

Je me disais aussi, c'est bizarre son lien :slight_smile:
Là c'est encore pire, il n'y pas du tout "d'Arduino" dans le code, mais tu ne lui as pas spécifié et il gère une hypothétique distance négative

Mais le mieux c'est de lui demander ce qu'il en pense.

Conclusion

Le programme respecte bien la description fournie :

  • Il lit les informations des capteurs de vitesse et de distance.
  • Il calcule la force de freinage nécessaire en fonction de ces informations.
  • Il applique cette force de freinage à l'aide d'un actionneur simulé.
  • Il fonctionne en boucle continue, simulant un dispositif de freinage en temps réel.

Cependant, il y a quelques points à améliorer ou à considérer :

  1. Validation des valeurs : Ajouter des validations pour les valeurs de capteur afin de gérer les cas extrêmes ou improbables (par exemple, une distance négative).
  2. Plus de détails sur la formule de freinage : Assurez-vous que la formule de calcul de la force de freinage est physiquement correcte pour le système réel, si possible en consultant des experts en mécanique ou en physique.
  3. Gestion des erreurs : Ajouter des mécanismes de gestion des erreurs pour les capteurs et l'actionneur afin de rendre le système plus robuste.

Globalement, le programme est correct et fonctionne comme prévu pour la simulation décrite.

Mon point de vue qui est le mien et personnel :slight_smile:
Il est plus intéressant de demander à ChatGPT comment faire certaine partie, plutot que quelque chose de général.

  • Par exemple de traduire une boucle For python en For C++.
  • Quel est la différence entre le typage Python et C++

@jpbbricole par contre il est évident que je te partage ton avis que les "jeunes" développeur, devrait apprendre à ce servir de cet outil.

Bonjour terwal

Oui, c'est pire :woozy_face: , j'ai supprimé les liens, je n'ai pas compris ce qui c'est passé avec les raccourcis ChatGPT.
Je mets la version ChatGPT Arduino, corrigée pour fonctionner avec des potentiomètres, j'ai laissé les lignes inutilisées.

A0 = distance
A1 = vitesse

Le programme:


// Déclarations des broches
const int distanceSensorPin = A0; // Broche pour le capteur de distance (analogique)
const int speedSensorPin = A1; // Broche pour le capteur de vitesse (analogique)
const int actuatorPin = 9; // Broche pour l'actionneur (PWM)

// Variables pour stocker les valeurs des capteurs
volatile int speed = 0;
int distance = 0;

// Variables pour la gestion du temps
unsigned long previousMillis = 0;
const long interval = 100; // Intervalle de mise à jour en millisecondes

void setup() {
	pinMode(speedSensorPin, INPUT);
	pinMode(distanceSensorPin, INPUT);
	pinMode(actuatorPin, OUTPUT);

	// Configurer l'interruption pour le capteur de vitesse
	//attachInterrupt(digitalPinToInterrupt(speedSensorPin), countSpeed, RISING);

	Serial.begin(9600);
}

void loop() {
	unsigned long currentMillis = millis();

	if (currentMillis - previousMillis >= interval) {
		previousMillis = currentMillis;

		// Lire la distance
		distance = map(analogRead(distanceSensorPin), 0, 1023, 100, 0);
		speed = map(analogRead(speedSensorPin), 0, 1023, 0, 100);

		// Calculer la force de freinage
		int brakeForce = calculateBrakeForce(speed, distance);

		// Appliquer la force de freinage
		analogWrite(actuatorPin, brakeForce);

		// Afficher les valeurs pour le débogage
		Serial.print("Speed: ");
		Serial.print(speed);
		Serial.print(" RPM, Distance: ");
		Serial.print(distance);
		Serial.print(" cm, Brake Force: ");
		Serial.println(brakeForce);

		// Réinitialiser la vitesse pour le prochain intervalle
		speed = 0;
	}
}

// Fonction d'interruption pour compter la vitesse
//void countSpeed() {
	//speed++;
//}

// Fonction pour calculer la force de freinage
int calculateBrakeForce(int currentSpeed, int currentDistance) {
	// Exemple simple de calcul : augmenter la force de freinage en fonction de la vitesse et de la proximité
	int brakeForce = map(currentSpeed, 0, 100, 0, 255); // Adapter les valeurs max en fonction de votre capteur
	if (currentDistance < 50) { // Si la distance est inférieure à 50 cm, augmenter la force de freinage
		brakeForce = constrain(brakeForce + map(currentDistance, 0, 50, 100, 0), 0, 255);
	}
	return brakeForce;
}

Bonne journée
jpbbricole

Tu n'a pas précisé dans tes commentaires que tu considérais que 0V = 0cm et 5V=100cm
Donc que ton potentiomètre donne une distance entre 0 et 100cm
Idem pour la vitesse entre 0m/s et 100m/s, 360km/h c'est sympa comme tyrolienne :laughing:

Je ne sais plus si c'est une vitesse de parcours ou de rotation de la poulie?

Non, je n'ai rien précisé du tout, j'ai juste mis en place les pièces du jeux, à @euge_chvlr de jouer avec ça.

La tyrolienne qui décoiffe :rofl:

Bonjour

Pour info, pour parcourir 20cm à 20km/h il faut 36millisecondes.

je vous laisse calculer l'énergie cinétique qu'il va falloir absorber pour pouvoir stopper sur seulement 20cm une masse (de valeur inconnue, pour l'instant) qui arrive à 20km/h.

J'ai été beaucoup occupée ces derniers jours, je vais me pencher sur vos remarque, merci de votre aide précieuses !