LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: CBX em 21 de Dezembro de 2012, 16:44
-
Boas
preciso de testar um DAC, peguei no IDE do arduino para ser mais rápido e fiz o seguinte código:
#include <LiquidCrystal.h>
#include <SPI.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int SSPin = 10;
void setup() {
lcd.begin(16, 2);
pinMode(SSPin, OUTPUT);
SPI.begin();
}
void loop() {
digitalWrite(SSPin, LOW);
SPI.transfer(11111111);
SPI.transfer(11111111);
digitalWrite(SSPin, HIGH);
delay(500);
lcd.clear();
lcd.print(analogRead(0));
}
o output do pino MOSI deveria ser 0xFF 0xFF, mas o logic analyser diz o contrário:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg818.imageshack.us%2Fimg818%2F3452%2Fsemttulolcu.png&hash=ba767e51de0a4d6132bcfac2693e1482caf44f20)
já perdi aqui sei lá quantas horas de volta disto e não descubro o problema, o que é que estou a fazer mal?
-
Boas,
Acho que sei qual é o problema, mas não tenho a certeza...
Estás a escrever o binário em vez do número em decimal. Logo, se fizeres isso acho que tens que colocar um B antes do binário.
O arduino deve estar a interpretar 11111111 como decimal. Em binário isso é:
101010011000101011000111
A informação que estás a receber é:
11000111
Logo estás a receber os 8 primeiros bits do nr 11111111 :)
Experimenta colocar o B antes.
Cumps
-
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimages3.wikia.nocookie.net%2F__cb20110516212211%2Fsimpsons%2Fpt%2Fimages%2Fb%2Fbf%2FHomer-doh-square.jpg&hash=8beb57d33cc3b47c31c28d7a23d865b0f028badc)
como é que eu me fui esquecer do 0b :o
ainda não testei mas deve ser isso
obrigado
-
:P Acontece... De nada
-
era isso mesmo, isto às vezes só à pancada ;D
já agora a biblioteca liquid crystal tem alguma função para limpar só parte do ecrã?
-
Acho que não... Mas podes colocar o cursor onde quiseres e escrever espaços para apagar só partes.
Mas não sei, só usei lcds uma ou duas vezes :(