Tag: arduino

Palavra-chave
Destaque/Sem destaque
Resolvida/Não Resolvida
Aberta/Encerrada
0 votos
0 respostas
247 visualizações

Saudações comunidade,
Estou trabalhando em um projeto com Arduino e preciso que este trabalhe a 2570Hz em uma das portas, porém vi que existe uma tabela fixa para setar o divisor de frequência em um dos temporizadores, então acredito que teria que setar no caso o Timer2 com divisor 1 ficando com 31250Hz nos pinos 3 e 11 e na programação usar de lógica para diminuir essa frequência para 2570Hz e poder aumentar em um décimo (e.g. 2570,1Hz) a cada pressionamento no pushbutton.
Alguém poderia me dizer se isso é possível?

0 votos
234 visualizações

Olá pessoal,

Estou querendo fazer um projeto final para meu curso de automação que consiste em comunicar arduino com CLP. Exemplo, prescionar um botao no CLP e acionar um LED no arduino. Isso é possivel? Existe algum modo de comunicação?

Obrigado!

  • Evertton Silva perguntada 5 meses atrás
  • última atividade 5 meses atrás
0 votos
0 respostas
207 visualizações

Amigos,

Estou tentando meu primeiro projeto com ESP8266 seguindo os passos do blog deste site:
https://www.embarcados.com.br/gravando-o-esp8266-01-na-ide-arduino/

Porém, na hora de subir meu código recebo a seguinte mensagem:

Archiving built core (caching) in: /var/folders/qq/kfvk4__s51vcd_nx_p7ggt6h0000gn/T/arduino_cache_208905/core/core_esp8266_esp8266_generic_CpuFrequency_80,FlashFreq_40,FlashMode_dio,UploadSpeed_115200,FlashSize_512K64,ResetMethod_ck,Debug_Disabled,DebugLevel_None_____6a6f03bb7fc7edd1c687f643adbf4091.a O sketch usa 222157 bytes (51%) de espaço de armazenamento para programas. O máximo são 434160 bytes. Variáveis globais usam 31524 bytes (38%) de memória dinâmica, deixando 50396 bytes para variáveis locais. O máximo são 81920 bytes. error: failed reading byte warning: espcomm_send_command: cant receive slip payload data a porta serial warning: espcomm_send_command: cant receive slip payload data selecionada não existe ou sua placa não está conectada error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data error: failed reading byte warning: espcomm_send_command: cant receive slip payload data warning: espcomm_sync failed error: espcomm_open failed error: espcomm_upload_mem failed

Alguém tem idéia do que está errado?

0 votos
0 respostas
233 visualizações

Bom dia amigos, gostaria de saber se alguem aqui possui experiencia em ISOBUS, estou querendo implementar em meu equipamento o ISOBUS para nao precisar mais ter uma tela, e sim usar o VT do proprio trator, li alguns documentos, artigos porem nao evolui, nao sei se alguem tem algum exemplo de como fazer uma tela simples…

0 votos
0 respostas
337 visualizações

Pessoal, tenho um projeto que utilizará um mouse como odômetro. Baseado no site abaixo:
[url]http://www.instructables.com/id/Optical-Mouse-Odometer-for-Arduino-Robot/[/url]

O código utiliza a biblioteca PS2Mouse.h desse endereço:
[url]https://github.com/jazzycamel/PS2Mouse[/url]

Funciona tudo bem, consigo ler os dados do mouse, porém a variável me retorna um valor máximo de +-127 (8 bits), com uma velocidade de movimentação do mouse muito lenta, ou seja, está muito sensível, a variável “estoura” se movimentar um pouco mais rápido, tentei alterar as bibliotecas para 16 bits e fazer com que a leitura não “estourasse”, porém meu conhecimento limitado não me ajudou. Alguém pra me dar uma luz? Meu maior problema foi entender o código… Agradeço qualquer ajuda.

PS2Mouse.h:

[code]#ifndef PS2_H

define PS2_H

include <Arduino.h>

class PS2Mouse {
public:
PS2Mouse(int data, int clk);
void write(uint8_t data);
uint8_t read(void);

void begin(void);
void getPosition(uint8_t &stat, int &x, int &y);

private:
int _ps2clk;
int _ps2data;
void golo(int pin);
void gohi(int pin);
int twos(uint8_t value, bool sign);
};

endif // PS_2_H

[/code]

PS2Mouse.cpp:

[code]#include “PS2Mouse.h”

PS2Mouse::PS2Mouse(int clk, int data){
_ps2clk=clk;
_ps2data=data;
gohi(_ps2clk);
gohi(_ps2data);
}

void PS2Mouse::write(uint8_t data){
uint8_t parity=1;

gohi(_ps2data);
gohi(_ps2clk);
delayMicroseconds(300);
golo(_ps2clk);
delayMicroseconds(300);
golo(_ps2data);
delayMicroseconds(10);
gohi(_ps2clk);

while(digitalRead(_ps2clk)==HIGH);

for(int i=0; i<8; i++){
if(data&0x01) gohi(_ps2data);
else golo(_ps2data);
while(digitalRead(_ps2clk)==LOW);
while(digitalRead(_ps2clk)==HIGH);
parity^=(data&0x01);
data=data>>1;
}

if(parity) gohi(_ps2data);
else golo(_ps2data);

while(digitalRead(_ps2clk)==LOW);
while(digitalRead(_ps2clk)==HIGH);

gohi(_ps2data);
delayMicroseconds(50);

while(digitalRead(_ps2clk)==HIGH);
while((digitalRead(_ps2clk)==LOW)||(digitalRead(_ps2data)==LOW));

golo(_ps2clk);
}

uint8_t PS2Mouse::read(void){
uint8_t data=0, bit=1;

gohi(_ps2clk);
gohi(_ps2data);
delayMicroseconds(50);
while(digitalRead(_ps2clk)==HIGH);

delayMicroseconds(5);
while(digitalRead(_ps2clk)==LOW);

for(int i=0; i<8; i++){
while(digitalRead(_ps2clk)==HIGH);
bit=digitalRead(_ps2data);
while(digitalRead(_ps2clk)==LOW);
bitWrite(data,i,bit);
}

while(digitalRead(_ps2clk)==HIGH);
while(digitalRead(_ps2clk)==LOW);
while(digitalRead(_ps2clk)==HIGH);
while(digitalRead(_ps2clk)==LOW);

golo(_ps2clk);

return data;
}

void PS2Mouse::begin(void){
write(0xFF);
for(int i=0; i<3; i++) read();
write(0xF0);
read();
delayMicroseconds(100);
}

void PS2Mouse::getPosition(uint8_t &stat, int &x, int &y){
write(0xEB);
read();
stat=read();
uint8_t _x=read();
uint8_t _y=read();

bool negx=bitRead(stat,4);
bool negy=bitRead(stat,5);
x=twos(_x, negx);
y=twos(_y, negy);
}

void PS2Mouse::golo(int pin){
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
}

void PS2Mouse::gohi(int pin){
pinMode(pin, INPUT);
digitalWrite(pin, HIGH);
}

const int m=0x100;
int PS2Mouse::twos(uint8_t value, bool sign){
int v=(int)value;
if(sign) v|=0xFF00;
return v;
}[/code]

0 votos
0 respostas
724 visualizações

Estou com uma dificuldade.
Estou controlando um motor 220V monofásico com dois reles e um botão Pulso .
Vou fazer a parada e inversao do sentido de rotaçao tipo motor de portao eletronico.

A inversao esta funcionando mas não estou conseguindo fazer os fim de cursos desligarem o rele.

Codigo abaixo:

const int sinalparaorele = 11; //define a porta para o acionamento do rele
const int sinalparaorele2 = 12; //define a porta para o acionamento do rele
int pinobotao = 2; //Porta utilizada para o botão de acionamento
int leitura; //Armazena informações sobre a leitura do botão
int estadorele = 0; //Armazena o estado do relé (ligado/desligado)
int estadorele2 =0; //Armazena o estado do relé 2 (ligado/desligado)
const int FC =4; //Fim de curso 1
const int FC2=5; //Fim de cuso 2
int posicao =0;
int estadoFC = 0;
int estadoFC2 =0;

void setup()
{
//Define o pino como saida (sinal para o rele)
pinMode(sinalparaorele, OUTPUT);
pinMode(sinalparaorele2, OUTPUT);
pinMode(pinobotao, INPUT);
pinMode(FC,INPUT);
pinMode(FC2, INPUT);
digitalWrite(sinalparaorele, HIGH);
digitalWrite(sinalparaorele2, HIGH);
// digitalWrite(sinalparaorele, 0);
}

void loop()
{

leitura = digitalRead(pinobotao);
estadoFC = digitalRead(FC);
estadoFC2 = digitalRead(FC2);

if (leitura != 1)
{
while(digitalRead(pinobotao) != 1)
{
delay(100);
}
// Inverte o estado
if(posicao ==4){
posicao = 0;
}
posicao = posicao + 1;

}
if (estadoFC ==HIGH){
posicao = posicao+1;
}
if (estadoFC2 ==HIGH){
posicao = posicao+1;
}
if(posicao == 0||2||4){
digitalWrite(sinalparaorele, HIGH);
digitalWrite(sinalparaorele2, HIGH);

}
if(posicao == 1){
   digitalRead(estadoFC);
   if(estadoFC == LOW){
    digitalWrite(sinalparaorele, LOW);
   digitalWrite(sinalparaorele2, HIGH);

   }
}
if(posicao == 3){
    digitalRead(estadoFC2);
    if(estadoFC2 ==LOW){
      digitalWrite(sinalparaorele, HIGH);
    digitalWrite(sinalparaorele2, LOW);


    }
    }

}

0 votos
1k visualizações

Olá,estou com dificuldades em programar minha placa SK-S7G2,preciso de ajuda pois não conheço essa placa,procurei pelo programa que é usado para acessar a placa e não encontrei,preciso de alguns exemplos para eu testar.

  • fabsec3561 perguntada 2 anos atrás
  • última atividade 2 anos atrás
0 votos
0 respostas
1k visualizações

Olá amigos, estou fazendo um projeto e gostaria muito da ajuda de vocês se possível. Estou ainda estou aprendendo sobre o assunto mas acredito que saiba dos conceitos básicos para começar.
Estou realizando o controle da velocidade de uma bomba de água com um sensor ultrasom (HC-SR04): possuo um tanque de água que quero elevar essa água para um tanque superior e a variação da velocidade da bomba seria de acordo com o nível do tanque inferior. A bomba de água é de 12v então estou usando um driver Ponte H L298N para controlar. A variação simples dessa velocidade já realizei como teste, simples conversões dos valores do sensor para a bomba, mas agora gostaria de fazer isso com a biblioteca PID do Arduino, e encontrei alguns problemas. Segue a lógica que criei até agora, não está finalizada por só falta a parte do direcionamento do valor do sensor para o Input do PID:

  • PID Basic Example for 12V Pump – By Edes
  • Reading analog input 0 to control analog PWM output 3
  • Esse exemplo foi adaptado para funcionar com uma bomba 12V,
  • um driver L298N e um ultrassonico

include <PID_v1.h> //Carrega a biblioteca PID

include <Ultrasonic.h> //Carrega a biblioteca do sensor ultrassonico

define PIN_INPUT 0 //Define os pinos para Input e Output do PID

define PIN_OUTPUT 3

define pino_trigger 4 //Define os pinos para o trigger e echo do ultrasom

define pino_echo 5

int IN1 = 7; //Saídas digitais 3 e 4 ligadas à entrada da Ponte H
int IN2 = 8;
//int variacV_PonteH = 6; //Saída PWM ligada à  entrada da Ponte H p/ variação de tensão do motor

int cmMsec, inMsec; //variáveis de conversão e visualização no monitor serial

//Define Variables we’ll be connecting to
double Setpoint, Input, Output;

//Specify the links and initial tuning parameters
double Kp=2, Ki=5, Kd=1;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);

//Inicializa o sensor nos pinos definidos
Ultrasonic ultrasonic(pino_trigger, pino_echo);

void setup()
{
//initialize the variables we’re linked to
Input = analogRead(PIN_INPUT);
Setpoint = 100;

//turn the PID on
myPID.SetMode(AUTOMATIC);

//Inicializa Pinos da bomba/motor e Ponte H
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
//pinMode(variacV_PonteH, OUTPUT);

//Inicia a serial com um baud rate de 9600
Serial.begin(9600);
}

void loop()
{
Input = analogRead(PIN_INPUT);
myPID.Compute();
analogWrite(PIN_OUTPUT, Output);

//Motor
//Sentido Horario:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);

//Sensor Ultrassonico
//Le as informaçoes do sensor, em cm e pol
int cmMsec, inMsec;
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);

//imprimi os valores no monitor serial:
Serial.print(“Distancia em cm: “);
Serial.print(cmMsec);
Serial.print(” – Distancia em polegadas: “);
Serial.print(inMsec);
Serial.print(” – “);
Serial.print(Input);
Serial.print(” – “);
Serial.println(Output);
delay(500);
}

Meu problema: Já tentei de diversas maneiras realizar alguma conversão/adaptação/leitura do valor do sensor para injetar na porta analógica que o PID utiliza (PIN_INPUT – A0) , porém sem sucesso. Cogitei a possibilidade de ter feito leituras erradas porque não se trata de um valor PWM vindo do sensor e sim um pulso, realizei conversões com o comando “map” para ver se ajudava mas sem sucesso também. Acredito que posso ter feito algum erro bobo e não enxerguei o que realmente devo fazer. Pensei em utilizar o conversor D/A MCP4725, mas ainda da não tenho conhecimento para usá-lo. Se alguém puder me dar uma luz, agradecerei muito.
Desculpe ter prolongado demais o post mas queria tentar explicar o melhor possível, e desculpe se postei na categoria errada. Agradeço desde já!

0 votos
0 respostas
1k visualizações

Amigos bom dia a todos, sou extremamente novato na área e preciso que algum de vocês possa estar criando um código para irrigação no arduino nano, que possa ler sensores de umidade do solo (estou usando o sensor de umidade to grouve), PH, temperatura do solo, temperatura ambiente, luminosidade e que os pinos de saida de alimentação do sensor de umidade contenha esta instrução para diminuir o desgaste prematuro (
pinMode(SMS_VCC,OUTPUT);
pinMode(SMS_GND,OUTPUT);)

Comprarei os sensores que forem indicados para o código, com uso do display LCD LiquidCrystal_I2C lcd(0x27, 20, 4). Aceito negociação pelo trabalho prestado. Por gentileza me informar os custos pelo E-mail [email protected]strong text

0 votos
2k visualizações

Gostaria de saber se tem como:
um pagina php de cadastro, tem nome, cpf, tagrfid, com a pagina aberta, preciso ler um cartão rfid com o arduino e passar para o campo(codigotag) da pagina-php aberta, alguém poderia dar ajuda?
a leitura do cartão ja´está ok, o que não estou conseguindo e passar o codigo rfid lido pelo arduino para a pagina.
Obrigado
Mauro

  • maurotopa perguntada 2 anos atrás
  • última atividade 2 anos atrás
Mostrando 1 - 10 de 43 resultados