Przycisk bistabilny - pat94 - 23-11-2016
Witam mam mały problem z dodaniem do układu przycisku bistabilnego. Otóż sam kod zapisu danych na kartę działa problem pojawia się gdy chcę ów zapis rozpoczynać po naciśnięciu przycisku i wtedy zapisuje się tylko pusty plik.
Z góry dzięki za wszelką pomoc
Kod: #include <HX711.h>
#include <SD.h>
#include <SPI.h>
HX711 cell (3,2);
int przycisk = 9;
File plik;
void setup(){
pinMode(przycisk, INPUT);
Serial.begin(9600);
Serial.print("Initalizing SD car...");
if(!SD.begin(10)){
Serial.println("Card failed, or not present");
return;
}
Serial.println("Card intialized");
}
void loop (){
if(digitalRead(przycisk) == HIGH){
SD.begin(SS);
long val = 0;
val=cell.read();
File plik=SD.open("Badanie.txt", FILE_WRITE) ; //Zapis pliku o nazwie badanie
plik.println(val);
Serial.println(val);
}
else
{
plik.close();
}
}
RE: Przycisk bistabilny - adix - 23-11-2016
po pierwsze jeśli nie używasz rezystora podciągającego to włącz go pinMode(przycisk, INPUT_PULLUP);
RE: Przycisk bistabilny - JasQ - 23-11-2016
Tutaj masz prosty kodzik ci pomoże
Kod: byte stat = 0;
byte przycisk = 5;
void setup() {}
void loop() {
if(digitalRead(przycisk) == HIGH and stat == 0 ){
delay(150); // opóźnienie lekkie dla przycisku
stat = 1;
}
if(digitalRead(przycisk) == LOW){stat = 0;}
}
RE: Przycisk bistabilny - pat94 - 23-11-2016
Dzięki za podpowiedź udało uruchomić zapis po naciśnięciu przycisku lecz dalej zapisuje tylko pusty plik bez wartości z belki. Macie może jakiś pomysł co robię nie tak ?
Kod: #include <HX711.h>
#include <SD.h>
#include <SPI.h>
HX711 cell (3,2);
byte stat =0;
byte przycisk=5;
File plik;
void setup(){
Serial.begin(9600);
Serial.print("Initalizing SD car...");
if(!SD.begin(10)){
Serial.println("Card failed, or not present");
return;
}
Serial.println("Card intialized");
}
void loop (){
if(digitalRead(przycisk) == HIGH and stat == 0){
delay(10);
stat=1;
long val = 0;
val=cell.read();
SD.begin(SS);
File plik=SD.open("Badanie.txt", FILE_WRITE) ;
plik.println(val);
Serial.println(val);
}
if(digitalRead(przycisk)==LOW){
stat=0;
plik.close();
}
}
RE: Przycisk bistabilny - JasQ - 23-11-2016
zobacz ten kod
Kod: #include <HX711.h>
#include <SD.h>
#include <SPI.h>
HX711 cell (3,2);
byte stat =0;
byte przycisk=5;
File plik;
void setup(){
Serial.begin(9600);
Serial.print("Initalizing SD car...");
if(!SD.begin(10)){
Serial.println("Card failed, or not present");
return;
}
Serial.println("Card intialized");
}
void loop (){
if(digitalRead(przycisk) == HIGH and stat == 0){
delay(10);
stat=1;
long val = 0;
val=cell.read();
plik = SD.open("Badanie.txt", FILE_WRITE) ;
if (plik){
plik.println(val);
plik.close();
Serial.println(val);
}
}
if(digitalRead(przycisk)==LOW){
stat=0;
}
}
}
RE: Przycisk bistabilny - pat94 - 24-11-2016
A wiec rozbudowałem układ o wyświetlacz i teraz mam znowu problem z zapisem danych na kartę mógłby ktoś podrzucić jakiś trop co robię źle (dopiero zaczynam więc jestem zielony trochę ).
Dzięki za wszelką pomoc
Kod: #include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <HX711.h>
#include <SD.h>
#include <SPI.h>
#define BACKLIGHT_PIN 3
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
HX711 scale (A1,A0);
byte stat =0;
byte przycisk=5;
File plik;
void setup(){
lcd.begin(16,2);
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH);
lcd.home();
Serial.begin(9600);
Serial.print("Initalizing SD car...");
if(!SD.begin(10)){
Serial.println("Card failed, or not present");
return;
}
Serial.println("Card intialized");
}
long val=0;
void loop (){
if(digitalRead(przycisk) == HIGH and stat == 0){
delay(10);
stat=1;
lcd.setCursor(0,0);
lcd.print("F=");
lcd.print(val);
lcd.print(" N");
val=scale.read();
SD.begin(SS);
File plik=SD.open("Badanie.txt", FILE_WRITE) ;
if (plik){
plik.println(val);
plik.close();
Serial.println(val);
}
}
if(digitalRead(przycisk)==LOW){
stat=0;
}
}
po raz kolejny poprawiam twojego posta , jeszcze raz będę musiał wstawić "code" i będę się gniewał
RE: Przycisk bistabilny - krn78 - 25-11-2016
Hmmm... a to nie jest tak aby, że w Arduino o niebo łatwiej jest (przy pinMode(przycisk, INPUT_PULLUP) podłączyć przycisk tak, aby zwierał dany pin z masą, a w kodzie napisać:
Kod: if(digitalRead(przycisk) == LOW and stat == 0){
Jeśli przycisk skonfigurowany jest jako 'INPUT_PULLUP)', to kiedy nie jest wciśnięty, automatycznie osiąga stan wysoki. Wciśnięcie sprawia, że osiąga stan niski.
RE: Przycisk bistabilny - pat94 - 11-12-2016
Dzięki za podpowiedzi układzik działa jak marzenie
Mam jeszcze jedno pytania mianowicie jak rozwiązać funkcję tarowania
Próbowałem czegoś takiego lecz z marnym skutkiem
bibilioteka do HX711 to HX711master
if (digitalRead(button) == LOW and stat==0);{
double val = scale.read_average(5);
scale.set_offset(val);
scale.tare();
}
Dzięki za odpowiedź
|