Capteur HC-SR04 ne fonctionne pas avec ATtiny 85 mais travaille avec Uno

Bonsoir,

Je travail sur un projet de détection avec des modules Ultrason (HCSR04) pour allumer des Leds avec la distance et tout ça contrôler par un microcontrôleur Attiny85.

Je vais vous décrire mon problème :

Lorsque je télécharge le code à mon Arduino Uno, il fonctionne sans aucun problème, mais, quand je télécharge le code dans mon ATtiny 85 mon microcontrôleur ne veut tout simplement pas fonctionner. Je charge mes codes avec l' "Avr Tiny programmeur" ( de Sparkfun ).

Détails: Quand je télécharge mon code dans l'Arduino Uno aucun probème, le fonctionnement de mes Ultrasons (HCSR04) marche parfaitement. Les Leds s'allume bien lors de la détection.

En revanche quand je charge mon code dans mon Attiny 85 le circuit ne fonctionne pas du moins les leds s'allument puis s'éteignent toutes seule, la communication avec mon module Ultrason ne se fait pas.

J'ai fait un teste pour voir si mon Attiny 85 fonctionne bien, j'ai téléchargé un code basique de quoi faire clignoter des Leds sur tout les Pins de mon microcontrôleur. Et comme par hasard le code fonctionne, les Leds clignotent !

Je ne suis que débutant dans la programmation et malgré les recherches sur les forums et sur internet je ne trouve pas la solution.

Se n'est pas un problème de mon programmeur, ni de mon Attiny 85.

Si quelqu'un pourrait m'aider je suis à fond sur mon projet et je bloque sur la programmation.

Merci :)

Bonjour,

Je n'ai pas de problème particulier pour fonctionner le HC-SR04 sur le attiny85, mais je trouve que c'est moins stable que sur le uno. J'utilise la librairie TinyNewPing http://projectsfromtech.blogspot.fr/2013/08/serial-sonar-sensor-attiny85-hc-sr04.html

Oui mais déjà téléchargé TinyNewPing que j'ai mis dans la librairie , mais je ne comprend pas pourquoi mon Attiny 85 ne fait pas fonctionner mon code.

Car il mon arduino marque une erreur quand j'insère le sketch TinyNewPing avec mon code.

Le problème c'est au niveau de la compilation, de l'upload ou de l'execution ?

Le problème viens de l’exécution du programme.

Moi de temps en temps j'avais des mesures erratiques (à 0). Je les ai filtrées. Est ce que tu à un moyen de voir les valeurs mesurées ?

Moi de temps en temps j'avais des mesures erratiques (à 0)

fonction digitalRead beaucoup trop lente. Il est parfois impossible de détecter si l'élément binaire reçu à la longueur correspondant à un 1 ou à celle correspond à un 0.

Non je n'ai pas de moyen pour mesurer les valeurs. Quel fonction serait la mieux pour avoir un résultat ?

J'utilise TinyDebugSerial http://arduino-for-beginners.blogspot.fr/2013/04/added-tinydebugserial-to-attiny85.html avec une interface usb/serie Le problème c'est que ça mobilise PB3

Bonjour, Nous montrer le code pour qu'on puisse te conseiller, et d'abord voir si ce simple programme fonctionne

Quelle est sa fréquence d'horloge ?

Oui voilà le code :

Et j’utilise une horloge 8Mhz

#define trigPin 4
#define echoPin 3
#define Pinled1 2
#define Pinled2 1

void setup() {

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(Pinled1, OUTPUT);
pinMode(Pinled2, OUTPUT);
}

void loop() {
long duration, distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 4) { // This is where the LED On/Off happens
digitalWrite(Pinled1,HIGH); // When the Red condition is met, the Green LED should turn off
digitalWrite(Pinled2,LOW);
}
else {
digitalWrite(Pinled1,LOW);
digitalWrite(Pinled2,HIGH);
}
if (distance >= 200 || distance <= 0){

}

delay(500);
}