wunderwaffe: туплю (dumb)
[personal profile] wunderwaffe
По следам https://wunderwaffe.dreamwidth.org/10675.html

Итак, с нерабочей схемой выяснить ничего не удалось, но удалось случайно ее починить -


Псоле демонтажа всего лишнего получилась такая схема -



Из А5 выходит SDA, который двумя транзисторами переключается на лиловый либо зеленый провод. Они ни к чему не подключены, меряется только напряжение лилового провода.

На выходах 4 и 5 выведено +5 вольт, т.е. оба транзистора открыты. SDA по умолчанию имеет уровень тоже +5 вольт.

Вопрос - каков будет потенциал лилового провода, если послать запрос на I2C
 Wire.beginTransmission(HMC5883L_ADDR); //open communication with HMC5883
 Wire.write(10); //select Identification register A
 Wire.endTransmission();
 Wire.requestFrom(HMC5883L_ADDR, 3);

и при этом

1) кнопка на желтом проводе нажата
2) кнопка на желтом проводе отжата

Казалось бы, а не пофиг ли? Все равно шина не подключена, поэтому ничего не будет в обоих случаях, только ошибка подключения.

Нет - когда кнопка нажата, то потенциал падает до 0 вольт и более отжатием не подымается и ардуина виснет. (То же справедливо и для подключенных к шине магнитометров)

Проблема решилась так - лиловый провод, тупо 3 см, ведущих к разьему, просто выпаял и впаял обратно. Какой-то непропай транзистора? Да я его выпаивал и ставил другой 8( Или провод коротил с соседней землей в разьеме? Но прозвон ничего не дал. Хотя прозвон может ничего не дать, но остаток флюса.. Резисторы подтяжки для SDA и SCL пробовал самые разные.

Ниспослание испытаний для смирения и молитвы?

Проверочный код -

#include <Wire.h> //I2C Arduino Library
#include "math.h"

#define HMC5883L_ADDR 0x1E //0011110b, I2C 7bit address of HMC5883
bool doit = false;

bool detectHMC5883L() {
Serial.println('1');
Wire.beginTransmission(HMC5883L_ADDR); //open communication with HMC5883
Wire.write(10); //select Identification register A
Wire.endTransmission();
Wire.requestFrom(HMC5883L_ADDR, 3);
Serial.println('2');
if(Wire.available()==3) {
 char a=Wire.read();
 char b=Wire.read();
 char c=Wire.read();
 Serial.println('3');  
 if(a=='H'&&b=='3'&&c=='3') return true;
}
 Serial.println('4');
return false;
}

void setup() {
pinMode(4, OUTPUT); //база1
pinMode(5, OUTPUT); //база2
digitalWrite(4,LOW);
digitalWrite(5,LOW);
Serial.begin(38400);
Wire.begin();
TWBR = 78;  // 25 kHz
TWSR |= _BV (TWPS0
);  // change prescaler
delay(100);
}

void loop() {

if (Serial.available()) {
byte bbb=Serial.read();
digitalWrite(4,HIGH);    
digitalWrite(5,HIGH);
delay(10);
bool detect=detectHMC5883L();
if (detect==true) {Serial.println("OK");}
 else {Serial.println("No HMC5883L detected!");}
delay(2000);    
}  
 
}


УПД: Выкинул к хуям. Новая вроде пашет.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

wunderwaffe: рабочее (Default)
доктор Вандершпигель

April 2022

S M T W T F S
     12
34567 89
1011 12 1314 1516
17181920212223
24252627282930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 27th, 2026 08:30 pm
Powered by Dreamwidth Studios