// vetor com 3 bytes while (digitalRead(DOUT)); // enquanto lendo o pino DOUT do HX711 for (byte j = 0; j < 3; j++) // contando a variável j de 0 a 2 (3 bytes) { for (byte i = 0; i < 8; i++) // contando variavel i de 0 a 7 (8 bits) { digitalWrite(hxSCK, HIGH); // envia pulso HIGH para pino SCK do HX711 bitWrite(data[2 - j], 7 - i, digitalRead(DOUT)); // lê os bits do DOUT e carrega no vetor digitalWrite(hxSCK, LOW); // envia pulso LOW para pino SCK do HX711 } } digitalWrite(hxSCK, HIGH); // envia pulso HIGH para pino SCK do HX711 digitalWrite(hxSCK, LOW); // envia pulso LOW para pino SCK do HX711 return ((long) data[2] 16) | ((long) data[1] 8) | (long) data[0]; // montando os dados do peso com os bytes recebidos }
Para entender como funciona o HX711 :
https://www.mouser.com/ds/2/813/hx711_english-1022875.pdf…
qual designio dos deuses, o I2C master parece que reserva pra si mesmo o valor zero, entao tem que usar o valor 1 pro slave 1 e 2 para slave 2, assim:
slave 1:
digitalWrite(m0,HIGH);digitalWrite(m1,LOW);digitalWrite(m2,LOW);
(não mais LOW-LOW-LOW)
slave 2:
digitalWrite(m0,LOW);digitalWrite(m1,HIGH);digitalWrite(m2,LOW);
Segundo essa lógica (mesmo que eu esteja errado), não seria possível usar 8 expansores, e sim apenas 7, porque se o valor ZERO (LOW-LOW-LOW) está reservado ao master, e se o maior valor = 7 (HIGH-HIGH-HIGH = 1 + 2 + 4), então não seriam possiveis 64 sensores, e sim "apenas" 56. Mesmo assim, um belo upgrade no Arduino.
O Mega, que eu tenho aqui, tem 51 digitais e 15 analogicos. Se preciso de 6 digitais e 1 analogico pra ligar 54 sensores (e não 64, como diz o site www.arduino.cc), ainda assim seriam 448 sensores!…
Adicionado por Alexandre ao 15:13 em 25 dezembro 2012
portinhola abrir e fechar quando a portinhola estiver fechada o led piscara a cada 500ms para verificar que o sistema esta ok.vai ter também um botão para abrir a portinhola, quando abrir o mesmo led ficara acesso,quando der mais um pulso no botão fecha a portinhola que tem um fim de curso para para a portinhola e depois de fechada a mesma não pode abrir durante 2seg.com o mesmo botão atuado. Eu achei esta programação que é bem parecida com que eu quero mas preciso acrescentar o fim de curso e o led se alguém poder me ajudar agradeço desde ja.
int switchPin = 2; // switch inputint motor1Pin1 = 3; // pin 2 on L293Dint motor1Pin2 = 4; // pin 7 on L293Dint enablePin = 9; // pin 1 on L293D
void setup() {// set the switch as an input:pinMode(switchPin, INPUT);
// set all the other pins you're using as outputs:pinMode(motor1Pin1, OUTPUT);pinMode(motor1Pin2, OUTPUT);pinMode(enablePin, OUTPUT);
// set enablePin high so that motor can turn on:digitalWrite(enablePin, HIGH);}
void loop() {// if the switch is high, motor will turn on one direction:if (digitalRead(switchPin) == HIGH) {digitalWrite(motor1Pin1, LOW); // set pin 2 on L293D lowdigitalWrite(motor1Pin2, HIGH); // set pin 7 on L293D high}// if the switch is low, motor will turn in the opposite direction:else {digitalWrite(motor1Pin1, HIGH); // set pin 2 on L293D highdigitalWrite(motor1Pin2, LOW); // set pin 7 on L293D low}}…
controle de 2 display`s através do arduino mais o CD4511. Com o display comum o projeto funciona normalmente, mas quando utilizo esse display maior ele liga apenas o "ponto". Até então eu estava utilizando 5V (da saída do arduino) para alimentar o display, troquei para 12V de uma fonte externa e dessa vez acendeu apenas o segmento D (base do display).
Realizei os testes também diretamente no display, ou seja, sem arduino e sem CD4511, e continuou o mesmo problema. Acredito que eu esteja utilizando alguma tensão errada... ("achismo" total).
Também já fiz o teste para ver se eu não estava ligando como catodo comum...
Alguém já trabalhou com esse tipo de display? Alguma sugestão??
Obrigado pela ajuda.
Felipe
…
xa com arduino acredito ser bastante fácil.
Aqui vai o códico.
#include <Stepper.h>
#define STEPS 200
Stepper stepper1(STEPS, 2, 3, 4, 5);Stepper stepper2(STEPS, 6, 7, 8, 9);Stepper stepper3(STEPS, 10, 11, 12, 13);
// Preciso modificar para a situação abaixo, porque quero colocar mais motores// e com o arduino uno só consigo 3 motores. Por isso comprei drivers A4988,// mas preciso de ajuda para fazer as modificações necessárias para os motores// corresponderem da forma que pretendo.
// Stepper stepper1(STEPS, 2, 3); // 2 dir e 3 step// Stepper stepper2(STEPS, 4, 5); // 4 dir e 5 step// Stepper stepper3(STEPS, 6, 7); // 6 dir e 7 step
void setup(){// Velocidade dos Motores em RPM stepper1.setSpeed(60); stepper2.setSpeed(60); stepper3.setSpeed(300);}void loop(){ stepper1.step(30); // Roda 54 graus stepper2.step(-30); // Roda -54 graus stepper3.step(1000); // Roda 5 voltas delay(2000); stepper3.step(-1000); // Roda -5 voltas stepper1.step(70); // Roda 126 graus stepper1.step(-100); // Roda -180 graus stepper2.step(-70); // Roda -126 graus stepper2.step(100); // Roda 180 graus}
Agradeço desde já a quem quiser ajudar-me
Abraço.…
Adicionado por Rui Carlos ao 6:26 em 30 junho 2016
eja, a cada pulso somar duas unidades (só números pares): 00 - 02 - 04 ... até 24.
Alguém pode me ajudar a adaptar o circuíto para essas funções: contar de 2 em 2 e limitar a contagem em 24 e fazer o display piscar ao atingir 24.
…
Adicionado por Joel Reinert ao 11:31 em 1 novembro 2018