Bonjour, bonsoir,
Pour faire clair et ne pas offenser les personnes qui pourrait se dire encore un assisté en plus...
Je n'y connais rien et en plus le niveau d'anglais est très très bas, ça aide pas pour les tutos du net.
Ce sont mes premiers pas, en électronique, voilà comme ça vous aurez compris le niveau.
Bon, j'explique enfin mon problème d'incompréhension:
- Branchement du ShiftRegister (74HC595): ok
- Tentative de comprendre le fonctionnement depuis plus d'une semaine: BOFBOF
Après avoir trouvé le code suivant:
int SER_Pin = 8; //pin 14 on the 75HC595
int RCLK_Pin = 9; //pin 12 on the 75HC595
int SRCLK_Pin = 10; //pin 11 on the 75HC595
//How many of the shift registers - change this
#define number_of_74hc595s 1
//do not touch
#define numOfRegisterPins number_of_74hc595s * 8
boolean registers[numOfRegisterPins];
void setup(){
pinMode(SER_Pin, OUTPUT);
pinMode(RCLK_Pin, OUTPUT);
pinMode(SRCLK_Pin, OUTPUT);
//reset all register pins
clearRegisters();
writeRegisters();
}
//set all register pins to LOW
void clearRegisters(){
for(int i = numOfRegisterPins - 1; i >= 0; i--){
registers[i] = LOW;
}
}
//Set and display registers
//Only call AFTER all values are set how you would like (slow otherwise)
void writeRegisters(){
digitalWrite(RCLK_Pin, LOW);
for(int i = numOfRegisterPins - 1; i >= 0; i--){
digitalWrite(SRCLK_Pin, LOW);
int val = registers[i];
digitalWrite(SER_Pin, val);
digitalWrite(SRCLK_Pin, HIGH);
}
digitalWrite(RCLK_Pin, HIGH);
}
//set an individual pin HIGH or LOW
void setRegisterPin(int index, int value){
registers[index] = value;
}
void loop(){
setRegisterPin(0,HIGH);
setRegisterPin(1,HIGH);
setRegisterPin(2, LOW);
setRegisterPin(3, LOW);
setRegisterPin(4, HIGH);
setRegisterPin(5, HIGH);
setRegisterPin(6 ,HIGH);
setRegisterPin(7, HIGH);
writeRegisters(); //MUST BE CALLED TO DISPLAY CHANGES
//Only call once after the values are set how you need.
} (
Ce que j'aimerais comprendre et faire, c'est de nommer les sorties du ShiftRegister afin de m'en servir comme d'une sortie digitale normale.
Comme pour allumer une led dans l'exemple blink:
exemple:
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Je ne comprends pas comment "appeler" ma sortie pour en faire ce que je veux, dès que j'appelle par exemple le setRegisterPin(3) pour le mettre en LOW, puis en HIGH ça ne fonctionne pas...
Je me rends compte de la longueur du message et m'excuse, mais pour être concret, je voudrais remplacer les sorties LEDS de ce petits code par ceux du shift register et je ne comprends pas comment.
[quote]#include "DHT.h"
#define DHTPIN 11 // sortie digitale du capteur
#define DHTTYPE DHT11 // DHT 11
int ledverte = 6; //défini le pin 6 comme étant la led verte
int ledrouge = 7; //défini le pin 7 comme étant la led rouge
int ledvertetemperature = 4;
int ledrougetemperature=3;
int ledrougemalfonction=5;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
pinMode(ledverte, OUTPUT); //défini led verte comme étant une sortie
pinMode(ledrouge,OUTPUT);
pinMode (ledvertetemperature,OUTPUT);
pinMode (ledrougetemperature,OUTPUT);
pinMode (ledrougemalfonction,OUTPUT);
}
void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
float t = dht.readTemperature();
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
digitalWrite (ledrougemalfonction,HIGH);
delay(100);
digitalWrite (ledrougemalfonction,LOW);
delay(100);
digitalWrite (ledrouge,HIGH);
delay(100);
digitalWrite (ledrouge,LOW);
delay(100);
digitalWrite (ledverte,HIGH);
delay (100);
digitalWrite (ledverte,LOW);
delay(100);
digitalWrite(ledvertetemperature,HIGH);
delay(100);
digitalWrite(ledvertetemperature,LOW);
delay(100);
digitalWrite(ledrougetemperature,HIGH);
delay(100);
digitalWrite(ledrougetemperature,LOW);
delay(100);
} else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
}
//changer les valeurs de h pour le résultat a obtenir
if (h>=50){
digitalWrite(ledverte, HIGH);
digitalWrite(ledrouge,LOW);
}else{
digitalWrite (ledverte, LOW);
digitalWrite (ledrouge, HIGH);
delay(700);
digitalWrite (ledrouge,LOW);
delay(700);
}
if (t>=28) {
digitalWrite(ledvertetemperature,LOW);
digitalWrite(ledrougetemperature,HIGH);
delay(700);
digitalWrite(ledrougetemperature,LOW);
delay(700);
}
else {
digitalWrite(ledvertetemperature,HIGH);
digitalWrite(ledrougetemperature,LOW);}
}
[/quote]
Si une âme charitable pouvait m'aider, je lui serais réellement reconnaissant.
Merci d'avance et encore désolé du pavé.