Prezado Visitante,
O Embarcados conta agora com uma ferramenta de fórum ao estilo Perguntas e Respostas.
Para participar do fórum você deve ser registrado e estar logado no site. Para se registrar clique aqui e para logar clique aqui.
Lembre-se, este espaço é destinado a quem procura ajuda e quem quer ajudar e compartilhar conhecimento.
Contamos com a colaboração de todos.
Atenciosamente,
Equipe Embarcados.
- Equipe Embarcados perguntada 5 anos atrás
- última atividade 5 anos atrás
Olá, boa noite!
Sou novo aqui no forum!
Estou passando um codigo de C para python e estou tendo algumas dificuldades.
Basicamente o codigo faz a comunicação via usb com um radio.
O comando que tenho duvida são:
ioctl(fd,TIOCMGET,&status);
status |= ( TIOCM_DTR | TIOCM_RTS );
ioctl(fd,TIOCMSET,&status);
usleep(500000);
como “traduzir” para o python?
Desde já agradeço!
- Rodrigo Lasmar perguntada 4 anos atrás
- última atividade 4 anos atrás
Esse ano estou concluindo o curso de Eng. Eletrônica e para o ano que vem, gostaria de continuar com uma pós-graduação na área de eletrônica embarcada. Porém, estou com dificuldades para encontrar instituições de ensino para fazer isso. Encontre a Unisal de Campinas, que possui uma especialização em Eletrônica Embarcada. Então,gostaria de saber se alguém sabe me dizer se é uma boa opção e se não, qual seria? Obrigado
- Danilo Mingotte perguntada 3 anos atrás
- última atividade 3 anos atrás
Ola Pessoal, eu estava tentando usar o MPlab X Code configurator para simplificar alguns codigos, quando tentei aceder a mesma, veio a seguinte caixa de erro! que devo fazer para solucionar isso!
Desculpem-me se o Post for repetido.
- Janclinton Francisco perguntada 1 ano atrás
- última atividade 1 ano atrás
Olá
Como faço para configurar o fonte para a interface – os caracteres são muito pequenos.
Obrigado
- Luiz Antonio Vargas Pinto perguntada 3 anos atrás
- última atividade 3 anos atrás
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]
- Samuel Silva perguntada 1 ano atrás
Olá pessoal,
Estou tentando colocar o conversor ADC max11043 para funcionar, mas ele nunca apresenta as tensões corretas. Quando coloco uma tensão fixa de 3V sobre os canais do ADC, a cada leitura ele apresenta valore diferentes. Pode ser problema de referência?
Circuito: introduza a descrição do link aqui
- Vinicius Maciel perguntada 2 anos atrás
- última atividade 2 anos atrás
Bom dia pessoal,
É possível utilizar o arduino para enviar comandos com saída 4-20ma?
- Romulo Nascimento perguntada 4 anos atrás
- última atividade 11 meses atrás
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT); // LED on pin 13 of UNO
pinMode(10, OUTPUT);
}
char rx_byte = 0;
void loop() {
if (Serial.available() > 0) { // is a character available?
rx_byte = Serial.read();
switch (rx_byte) {
case ‘1’:
digitalWrite(10, HIGH);
delay (100);
digitalWrite (10, LOW);
delay (100);
Serial.println(“LED LIGADO”);
break;
case ‘2’:
digitalWrite(10, LOW);
Serial.println(“LED DESLIGADO”);
break;
case ‘3’:
Serial.println(“——- MENU ——-“);
Serial.println(“1. LIGADO.”);
Serial.println(“2. DESLIGADO.”);
Serial.println(“3. MENU.”);
Serial.println(“——————–“);
}
switch (rx_byte) {
case ‘7’:
digitalWrite(13, HIGH);
Serial.println(“LIGADO”);
break;
case ‘8’:
digitalWrite(13, LOW);
Serial.println(“DESLIGADO”);
break;
case ‘9’:
Serial.println(“——- MENU ——-“);
Serial.println(“1. LED ARDUINO LIGADO.”);
Serial.println(“2. LED ARDUINO DESLIGADO.”);
Serial.println(“3. MENU ARDUINO.”);
Serial.println(“——————–“);
} // end: switch (rx_byte)
} // end: if (Serial.available() > 0)
}
Não consigo fazer ele fica led piscando
pois ele pisca 1x e desliga
alguem sabe como fazer ele ficar piscando?
- Michael Silva perguntada 4 anos atrás
- última atividade 4 anos atrás
Ola Pessoal eu gostaria de vossa ajuda.
Eu sou iniciante a programar micro-controladores, e estou programando o micro de 8bits da familia 18f no Mplab x, e estou tendo dificuldades nisso.
EU fiz o código para a livraria do C18, compilou sem erro, mas não está simulando no Proteus.
Por isso tentei mudar para livraria XC8, mas essa livraria n encontrei a biblioteca para LCD e nem Biblioteca pra Delays, passei pela google, dei varias pesquisadas, e nada parece tar resolvendo o meu problema, gostaria que pudessem me ajudar a solucionar esse problema:
Ai tem o código abaixo para o C18.
#include <p18f4550.h>
#define _XTAL_FREQ = 20000000
#pragma config MCLRE = OFF, LVP = OFF, WDT = OFF, PLLDIV = 5, CPUDIV = OSC1_PLL2
#pragma config FOSC = HS, PBADEN = OFF, XINST = OFF
#include <delays.h>
#include <xlcd.h>
void DelayFor18TCY( void )
{
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
}
void DelayPORXLCD (void)
{
Delay1KTCYx(75); // Delay of 15ms
// Cycles = (TimeDelay * Fosc) / 4
// Cycles = (15ms * 20MHz) / 4
// Cycles = 75,000
return;
}
void DelayXLCD (void)
{
Delay1KTCYx(25); // Delay of 5ms
// Cycles = (TimeDelay * Fosc) / 4
// Cycles = (5ms * 20MHz) / 4
// Cycles = 25,000
return;
}
void Init_lcd(void){
OpenXLCD( EIGHT_BIT & LINES_5X7 );
while( BusyXLCD() );
WriteCmdXLCD( EIGHT_BIT & LINES_5X7 );
WriteCmdXLCD( BLINK_ON );
WriteCmdXLCD( SHIFT_DISP_LEFT );
}
void main(void) {
TRISD = 0x00;
OSCCONbits.IRCF=0b1110;
OSCCONbits.SCS=0b00;
ADCON1bits.PCFG0=0b0000;
Init_lcd();
putrsXLCD( "Hello World" );
SetDDRamAddr(0x40);
while(1){
LATDbits.LATD0 = 0xff;
Delay10KTCYx(75);
LATDbits.LATD0 = 0x00;
Delay10KTCYx(75);
}
}
Poderiam me ajudar por favor!
- Janclinton Francisco perguntada 1 ano atrás
- última atividade 1 ano atrás