спидометр для велосипеда на arduino
- Сообщения: 6
- Зарегистрирован: Пт май 01, 2020 13:56:47
Есть ардуино нано с экраном 1602 подключенное по I2C. Подскажите пожалуйста, куда можно подключить геркон и какой код можно написать чтобы он показывал скорость?
- Реклама
- Сообщения: 2804
- Зарегистрирован: Вс фев 02, 2020 09:12:37
- Сообщения: 6
- Зарегистрирован: Пт май 01, 2020 13:56:47
нашёл такой код, но ничего не отображается
int val;
long last=0;
int stat=LOW;
int stat2;
int contar=0;
int displayrpm;
int sens=75; // this value indicates the limit reading between dark and light,
// it has to be tested as it may change acording on the
// distance the leds are placed.
int nPalas=1; // the number of blades of the propeller
int milisegundos=500; // the time it takes each reading
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
}
void loop()
{
val=analogRead(0);
if(val<sens)
stat=LOW;
else
stat=HIGH;
digitalWrite(13,stat); //as iR light is invisible for us, the led on pin 13
//indicate the state of the circuit.
if(stat2!=stat){ //counts when the state change, thats from (dark to light) or
//from (light to dark), remmember that IR light is invisible for us.
contar++;
stat2=stat;
}
if(millis()-last>=milisegundos){
double rps=((double)contar/nPalas)/2.0*1000.0/milisegundos;
double rpm=((double)contar/nPalas)/2.0*60000.0/(milisegundos);
displayrpm=rpm;
Serial.print((contar/2.0));Serial.print(" RPS ");Serial.print(rps);
Serial.print(" RPM");Serial.print(rpm);Serial.print(" VAL ");Serial.println(val);
contar=0;
last=millis();
Serial.print(" MPH ");
Serial.print(rpm*0.0080622311);
LCDPrint ();
}
}
void LCDPrint ()
{
lcd.clear ();
lcd.setCursor (0,0);
lcd.print("MPH");
lcd.setCursor (0,1);
lcd.print(displayrpm*0.0080622311 );
lcd.setCursor (8,0);
lcd.print("RPM");
lcd.setCursor (8,1);
lcd.print(displayrpm);
return;
}
int val;
long last=0;
int stat=LOW;
int stat2;
int contar=0;
int displayrpm;
int sens=75; // this value indicates the limit reading between dark and light,
// it has to be tested as it may change acording on the
// distance the leds are placed.
int nPalas=1; // the number of blades of the propeller
int milisegundos=500; // the time it takes each reading
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
}
void loop()
{
val=analogRead(0);
if(val<sens)
stat=LOW;
else
stat=HIGH;
digitalWrite(13,stat); //as iR light is invisible for us, the led on pin 13
//indicate the state of the circuit.
if(stat2!=stat){ //counts when the state change, thats from (dark to light) or
//from (light to dark), remmember that IR light is invisible for us.
contar++;
stat2=stat;
}
if(millis()-last>=milisegundos){
double rps=((double)contar/nPalas)/2.0*1000.0/milisegundos;
double rpm=((double)contar/nPalas)/2.0*60000.0/(milisegundos);
displayrpm=rpm;
Serial.print((contar/2.0));Serial.print(" RPS ");Serial.print(rps);
Serial.print(" RPM");Serial.print(rpm);Serial.print(" VAL ");Serial.println(val);
contar=0;
last=millis();
Serial.print(" MPH ");
Serial.print(rpm*0.0080622311);
LCDPrint ();
}
}
void LCDPrint ()
{
lcd.clear ();
lcd.setCursor (0,0);
lcd.print("MPH");
lcd.setCursor (0,1);
lcd.print(displayrpm*0.0080622311 );
lcd.setCursor (8,0);
lcd.print("RPM");
lcd.setCursor (8,1);
lcd.print(displayrpm);
return;
}
разбей задачу на 2 части - писать на экране и измерять скорость и реши их по-очереди.
1) правильно подключи дисплей, научись выводить текст и переменные (вроде в арду за это отвечают разные команды) в требуемом тебе виде
тогда уже переходи к задаче №2 - к измерению скорости, когда решишь её, можно добавить №3 - автоматическое включение-выключение...
1) правильно подключи дисплей, научись выводить текст и переменные (вроде в арду за это отвечают разные команды) в требуемом тебе виде
тогда уже переходи к задаче №2 - к измерению скорости, когда решишь её, можно добавить №3 - автоматическое включение-выключение...
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- Сообщения: 6
- Зарегистрирован: Пт май 01, 2020 13:56:47
Ivanoff-iv,
Подключить, то я подключил и надписи выводил. А тут не знаю почему. Я то ардуино начал неделю назад заниматься
Подключить, то я подключил и надписи выводил. А тут не знаю почему. Я то ардуино начал неделю назад заниматься
- Реклама
все когдато начинали... я тоже с ардуины начинал, (из-за лсд дисплея, который был в комплекте с моей ардуиной и который сам без подсказок я запустить был не в состоянии)
так, текст уже выходит, хорошо, значит всё собрано правильно.
теперь изучай и выводи на дисплей переменные, как выведешь - пиши, не знаю, хватит ли точности миллис, попробуем находить скорость с помощью неё... (скорее всего повторим код написанный тобой выше, но, может и нет..., но даже если и повторим, то это будет осознанный код, а не простая копипаста).
так, текст уже выходит, хорошо, значит всё собрано правильно.
теперь изучай и выводи на дисплей переменные, как выведешь - пиши, не знаю, хватит ли точности миллис, попробуем находить скорость с помощью неё... (скорее всего повторим код написанный тобой выше, но, может и нет..., но даже если и повторим, то это будет осознанный код, а не простая копипаста).
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- Сообщения: 6
- Зарегистрирован: Пт май 01, 2020 13:56:47
Помогите с кодом пожалуйста. 2 недели пытаюсь найти, уже ардуино с экраном сжег по случайности, не хочу еще один набор сжечь
ка можно сжечь
непонятно в 230 засунул?ардуино с экраном сжег по случайности
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
- Сообщения: 6
- Зарегистрирован: Пт май 01, 2020 13:56:47
musor,
Магнит случайно уронил на плату экрана, испортился не только экран. Проверял на новом экране
Добавлено after 18 minutes 1 second:
/*
Created 2016
by AlexGyver
AlexGyver Home Labs Inc.
*/
//-----------дисплей-----------
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для QAPASS 1602
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
//--------дисплей-------
float w_length=2.050; //длина окружности колеса в метрах
void setup() {
Serial.begin(9600); //открыть порт
attachInterrupt(0,sens,RISING); //подключить прерывание на 2 пин при повышении сигнала
pinMode(3, OUTPUT); //3 пин как выход
digitalWrite(3, HIGH); //подать 5 вольт на 3 пин
//для дисплея цифры----------
LED_0F[0] = 0xC0; //0
LED_0F[1] = 0xF9; //1
LED_0F[2] = 0xA4; //2
LED_0F[3] = 0xB0; //3
LED_0F[4] = 0x99; //4
LED_0F[5] = 0x92; //5
LED_0F[6] = 0x82; //6
LED_0F[7] = 0xF8; //7
LED_0F[8] = 0x80; //8
LED_0F[9] = 0x90; //9
LED_0F[10] = 0b01000000; //.0
LED_0F[11] = 0b01111001; //.1
LED_0F[12] = 0b00100100; //.2
LED_0F[13] = 0b00110000; //.3
LED_0F[14] = 0b00011001; //.4
LED_0F[15] = 0b00010010; //.5
LED_0F[16] = 0b00000010; //.6
LED_0F[17] = 0b01111000; //.7
LED_0F[18] = 0b00000000; //.8
LED_0F[19] = 0b00010000; //.9
Timer1.initialize(1500); // set a timer of length 1500
Timer1.attachInterrupt(timerIsr); // attach the service routine here
//--------------
}
void sens() {
if (millis()-lastturn > 80) { //защита от случайных измерений (основано на том, что велосипед не будет ехать быстрее 120 кмч)
SPEED=w_length/((float)(millis()-lastturn)/1000)*3.6; //расчет скорости, км/ч
lastturn=millis(); //запомнить время последнего оборота
DIST=DIST+w_length/1000; //прибавляем длину колеса к дистанции при каждом обороте оного
}
}
void loop() {
int cel_sp=floor(SPEED);
int sot_sp=(((float)cel_sp/1000)-floor((float)cel_sp/1000))*10;
int des_sp=(((float)cel_sp/100)-floor((float)cel_sp/100))*10;
int ed_sp=(((float)cel_sp/10)-floor((float)cel_sp/10))*10;
int dr_sp=(float)(SPEED-floor(SPEED))*10;
if (flag==0) {
//disp.set(LED_0F[sot_sp],3); //вывод сотен скорости (для велосипеда не нужно =)
disp.set(LED_0F[des_sp],2); //вывод десятков скорости
disp.set(LED_0F[ed_sp+10],1); //вывод единиц скорости, с точкой
disp.set(LED_0F[dr_sp],0); //вывод после точки
}
int cel_di=floor(DIST); //целые
int sot_di=(((float)cel_di/1000)-floor((float)cel_di/1000))*10; //сотни
int des_di=(((float)cel_di/100)-floor((float)cel_di/100))*10; //десятки
int ed_di=floor(((float)((float)cel_di/10)-floor((float)cel_di/10))*10); //единицы (с точкой)
int dr_di=(float)(DIST-floor(DIST))*10; //десятые части
if ((millis()-lastturn)>2000){ //если сигнала нет больше 2 секунды
SPEED=0; //считаем что SPEED 0
}
void timerIsr() //нужно для дисплея
{
disp.timerIsr();
}
Пытаюсь переделать этот код под себя, но не знаю что делать с выводом на экран
Магнит случайно уронил на плату экрана, испортился не только экран. Проверял на новом экране
Добавлено after 18 minutes 1 second:
/*
Created 2016
by AlexGyver
AlexGyver Home Labs Inc.
*/
//-----------дисплей-----------
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для QAPASS 1602
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
//--------дисплей-------
float w_length=2.050; //длина окружности колеса в метрах
void setup() {
Serial.begin(9600); //открыть порт
attachInterrupt(0,sens,RISING); //подключить прерывание на 2 пин при повышении сигнала
pinMode(3, OUTPUT); //3 пин как выход
digitalWrite(3, HIGH); //подать 5 вольт на 3 пин
//для дисплея цифры----------
LED_0F[0] = 0xC0; //0
LED_0F[1] = 0xF9; //1
LED_0F[2] = 0xA4; //2
LED_0F[3] = 0xB0; //3
LED_0F[4] = 0x99; //4
LED_0F[5] = 0x92; //5
LED_0F[6] = 0x82; //6
LED_0F[7] = 0xF8; //7
LED_0F[8] = 0x80; //8
LED_0F[9] = 0x90; //9
LED_0F[10] = 0b01000000; //.0
LED_0F[11] = 0b01111001; //.1
LED_0F[12] = 0b00100100; //.2
LED_0F[13] = 0b00110000; //.3
LED_0F[14] = 0b00011001; //.4
LED_0F[15] = 0b00010010; //.5
LED_0F[16] = 0b00000010; //.6
LED_0F[17] = 0b01111000; //.7
LED_0F[18] = 0b00000000; //.8
LED_0F[19] = 0b00010000; //.9
Timer1.initialize(1500); // set a timer of length 1500
Timer1.attachInterrupt(timerIsr); // attach the service routine here
//--------------
}
void sens() {
if (millis()-lastturn > 80) { //защита от случайных измерений (основано на том, что велосипед не будет ехать быстрее 120 кмч)
SPEED=w_length/((float)(millis()-lastturn)/1000)*3.6; //расчет скорости, км/ч
lastturn=millis(); //запомнить время последнего оборота
DIST=DIST+w_length/1000; //прибавляем длину колеса к дистанции при каждом обороте оного
}
}
void loop() {
int cel_sp=floor(SPEED);
int sot_sp=(((float)cel_sp/1000)-floor((float)cel_sp/1000))*10;
int des_sp=(((float)cel_sp/100)-floor((float)cel_sp/100))*10;
int ed_sp=(((float)cel_sp/10)-floor((float)cel_sp/10))*10;
int dr_sp=(float)(SPEED-floor(SPEED))*10;
if (flag==0) {
//disp.set(LED_0F[sot_sp],3); //вывод сотен скорости (для велосипеда не нужно =)
disp.set(LED_0F[des_sp],2); //вывод десятков скорости
disp.set(LED_0F[ed_sp+10],1); //вывод единиц скорости, с точкой
disp.set(LED_0F[dr_sp],0); //вывод после точки
}
int cel_di=floor(DIST); //целые
int sot_di=(((float)cel_di/1000)-floor((float)cel_di/1000))*10; //сотни
int des_di=(((float)cel_di/100)-floor((float)cel_di/100))*10; //десятки
int ed_di=floor(((float)((float)cel_di/10)-floor((float)cel_di/10))*10); //единицы (с точкой)
int dr_di=(float)(DIST-floor(DIST))*10; //десятые части
if ((millis()-lastturn)>2000){ //если сигнала нет больше 2 секунды
SPEED=0; //считаем что SPEED 0
}
void timerIsr() //нужно для дисплея
{
disp.timerIsr();
}
Пытаюсь переделать этот код под себя, но не знаю что делать с выводом на экран
это знакогенератор для 7сегментного светодиодного индикатора, а у тебя индикатор уже со встроенным знакогенератором....
готовый ардуиновский код я тебе не смогу написать - года три ардуину в руках не держал... есть одна, но она на работе, а я дома... поэтому проверить не на чем
а что заставило искать новый код? у тебя ведь получалось уже выводить на свой дисплей?
готовый ардуиновский код я тебе не смогу написать - года три ардуину в руках не держал... есть одна, но она на работе, а я дома... поэтому проверить не на чем
а что заставило искать новый код? у тебя ведь получалось уже выводить на свой дисплей?
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Спидометр на абдурине? И как в том ералаше — таскать за собой прицеп с батарейками... Ну или более простой вариант накачивать ноги: работать на генератор!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 6
- Зарегистрирован: Пт май 01, 2020 13:56:47
Ivanoff-iv,
Когда я смог подключить дисплей, датчик холла стал считывать секунду(то есть ему нужна секунда чтоб увидеть магнит). Пытался найти в чем причина и решил попробовать другой переделать, но с новым кодом тоже проблемы
Когда я смог подключить дисплей, датчик холла стал считывать секунду(то есть ему нужна секунда чтоб увидеть магнит). Пытался найти в чем причина и решил попробовать другой переделать, но с новым кодом тоже проблемы
- Сообщения: 7722
- Зарегистрирован: Вс июл 24, 2011 11:38:09
Вывалю свой набросок, отсюда, наверно почти лучший вариант что попалось.
В общем эта фигня не работает на таких скоростях.
Редкие импульсы оно показывает как 500, потом цифра вырастает раз в 5, потом ещё вдвое, сбрасывает на 0 и повторяется. Может можно посчитать какоето среднее, но чё контролер забивать такой фигнёй, ему и так работы валом.
В общем думаю прилепить чтото такое или такое.
Частоту не знаю, возможно 10гц, мои приборы такие короткие импульсы не видят.
Один из вариантов поставить удвоитель частоты на логике, не знаю на сколько оно сможет работать.
Алгоритм я понял так.
Берётся цифра которая выросла за всё время до импульса и она показывается, ну и заодно прибавляется к другой цифре из которой и будет опять взята эта цифра. Этот трюк работает если эти цифры получать часто чтоб экран не успевал их убирать.
Этот код изначально казался сложным и примудрым, я думал реально есть какойто таймер который следит за участком времени, а оказалось тут вообще голимо.
------------
Как оказалось это работает если delay хотябы 250, а в идеале больше чем импульс. Но уже при такой на экране секунды начали не попадать. Так что такой измеритель и часы в одной коробке уже не получатся
В общем эта фигня не работает на таких скоростях.
Редкие импульсы оно показывает как 500, потом цифра вырастает раз в 5, потом ещё вдвое, сбрасывает на 0 и повторяется. Может можно посчитать какоето среднее, но чё контролер забивать такой фигнёй, ему и так работы валом.
В общем думаю прилепить чтото такое или такое.
Частоту не знаю, возможно 10гц, мои приборы такие короткие импульсы не видят.
Один из вариантов поставить удвоитель частоты на логике, не знаю на сколько оно сможет работать.
Спойлер
Код: Выделить всё
volatile int time = 0;
volatile int time_last = 0;
volatile float rev=0;
volatile int rpm;
//сетуп
setitr();
digitalWrite(2, HIGH);
//
void taho() {
rev++;
}
void setitr(){
attachInterrupt(0,taho,FALLING); //digitalPinToInterrupt(2)
}
//цикл
detachInterrupt(0);
time = ( millis() - time_last);
rpm=(rev/time)*60000;
time_last = millis();
rev=0;
setitr();
//Берётся цифра которая выросла за всё время до импульса и она показывается, ну и заодно прибавляется к другой цифре из которой и будет опять взята эта цифра. Этот трюк работает если эти цифры получать часто чтоб экран не успевал их убирать.
Этот код изначально казался сложным и примудрым, я думал реально есть какойто таймер который следит за участком времени, а оказалось тут вообще голимо.
------------
Как оказалось это работает если delay хотябы 250, а в идеале больше чем импульс. Но уже при такой на экране секунды начали не попадать. Так что такой измеритель и часы в одной коробке уже не получатся
У адуринки есть функция
pulseIn(pin, value)
которая
"Works on pulses from 10 microseconds to 3 minutes in length."
Интервал между сигналом датчика нам известен, длина окружности колеса (при давлении "по умолчанию") также.
Вот на основе этих данных и строим "веломер".

pulseIn(pin, value)
которая
"Works on pulses from 10 microseconds to 3 minutes in length."
Интервал между сигналом датчика нам известен, длина окружности колеса (при давлении "по умолчанию") также.
Вот на основе этих данных и строим "веломер".
- Сообщения: 7722
- Зарегистрирован: Вс июл 24, 2011 11:38:09
В общем то прикинул и оказалось что при длине окружности малюсенького колеса 1.69м, частота получается 0.02 в секунду за 1км/ч.
Это всё полнейшая фигня. Надо или магнитов добавлять, или брать с внутреннего датчика с потерями, или умножать или замерять както ещё, как вариант отдельный МК который не будет занят экраном.
pulseIn()
Насчитывает 6, 8, 9. Если в последней строчке поставить HIGH, тогда вдвое меньше кажет. Ну можно резюк приколхозить вместо "digitalWrite(pintaho, HIGH);", но сомневаюсь что оно чтото даст.
Видимо мои старые подсчёты с ошибками, там говорится о 3 магнитах, да и окружность 1м видимо наугад. Там была вообще другая цель эстетическая, перевода в метры в минуту, поэтому о частоте и не думал.
---
С этим кодом контролер стартует не сразу, а секунды через 3
Это всё полнейшая фигня. Надо или магнитов добавлять, или брать с внутреннего датчика с потерями, или умножать или замерять както ещё, как вариант отдельный МК который не будет занят экраном.
pulseIn()
Код: Выделить всё
const int pintaho = 2;
unsigned long duration;
void setup()
{
pinMode(pintaho, INPUT);
digitalWrite(pintaho, HIGH);
}
void loop()
{
duration = pulseIn(pintaho , LOW);
}Видимо мои старые подсчёты с ошибками, там говорится о 3 магнитах, да и окружность 1м видимо наугад. Там была вообще другая цель эстетическая, перевода в метры в минуту, поэтому о частоте и не думал.
---
С этим кодом контролер стартует не сразу, а секунды через 3
У старомеханического на оси втулки колеса стоял диск с пазами, которые шестернку крутили.
Уж не помню, сколько там пазов/зубьев было... А с шерстеренки тросик шел в головку со стрелкой(текущая скорость) и барабанным счетчиком(километраж).
Хоша... В принципе и один оборот тем pulseIn(pin, value) замерить можно, но потребуется и усреднение и масштабирование результата, да еще и отсечка "неполного оборота" при "пешем ходе" (или "обратном вращении).
Как вариант - два датчика со смещением и областью взаимоперекрытия - как у контактов энкодера.

Уж не помню, сколько там пазов/зубьев было... А с шерстеренки тросик шел в головку со стрелкой(текущая скорость) и барабанным счетчиком(километраж).
Хоша... В принципе и один оборот тем pulseIn(pin, value) замерить можно, но потребуется и усреднение и масштабирование результата, да еще и отсечка "неполного оборота" при "пешем ходе" (или "обратном вращении).
Как вариант - два датчика со смещением и областью взаимоперекрытия - как у контактов энкодера.
У механики был механизм, передающий на тросик вращение (передаточное число было около 3-4) но это совсем другая история...
74LS00, бешеная производительность...
может в этом случае есть смысл слезть с ардуины?
(в смысле - платку оставить, а программу сменить? ИМХО для этой задачи заглаза тини2313 хватит... при нормальной программе)
74LS00, бешеная производительность...
(в смысле - платку оставить, а программу сменить? ИМХО для этой задачи заглаза тини2313 хватит... при нормальной программе)
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Ну уж не так, чтоб и другая...
Допустим моторчик, выдающий ЭДС пропорционально скорости вращения вала.
И тот же вопрос на сколько "тиков" оборот колеса поделить...
Хотя ... я б таки два датчика с пластиной поставил - как у энкодера...
А к оному периодомер с пересчетом...

Допустим моторчик, выдающий ЭДС пропорционально скорости вращения вала.
И тот же вопрос на сколько "тиков" оборот колеса поделить...
Хотя ... я б таки два датчика с пластиной поставил - как у энкодера...
А к оному периодомер с пересчетом...
логично. но нужно ли определять направление? я например задним ходом на велосипеде практически не езжу...
а если как защиту от накручивания, то небольшой конденсатор и 2 геркона (один заряжает, другой разряжает) так и накручивать, раскачивая магнит у геркона не выйдет и от сквозных токов (которые идут, если оставить колесо магнитом у геркона), разряжающих батарею избавляемся...
а если как защиту от накручивания, то небольшой конденсатор и 2 геркона (один заряжает, другой разряжает) так и накручивать, раскачивая магнит у геркона не выйдет и от сквозных токов (которые идут, если оставить колесо магнитом у геркона), разряжающих батарею избавляемся...
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Герконы конечно можно (надежное народное средство)...
Однако есть и поинтереснее: что тот,что другой сейчас у торговцев абдуринкой продаются...

Однако есть и поинтереснее: что тот,что другой сейчас у торговцев абдуринкой продаются...


