0
<< предыдущая заметкаследующая заметка >>
04 мая 2017
Вдогонку к вчерашнему посту про алгоритмы

Вчерашний пост http://lleo.me/dnevnik/2017/05/03.html про управление мотором собрал множество комментариев - реально горжусь вами, что вы у меня такие умные. Советов оказалось множество, и буквально в пятом комменте некто Лжедмитрий Малобуков дал ссылку на математический алгоритм:
https://stackoverflow.com/questions/22583391/peak-signal-det[...] Который сильно подкупал анимированной гифкой, иллюстрирующей матаппарат. Язык алгоритма правда был незнакомый. Да и математику я, оказывается, сильно подзабыл - средние отклонения там всякие, Мю... Но с помощью PHP я алгоритм воссоздал, и он заработал у меня на тестовом массиве. А Чук, неожиданно заинтересовавшийся проблемой, параллельно накидал его на C. Я его код потом пару раз переписал, в итоге получилось вообще несколько строчек, ниочем, как говорится:

показать код chuk.c

chuk.c

#include <math.h>
#include "chuk.h"

#define FLT_lag        5
#define FLT_TOL        64
#define FLT_THRESHOLD  3.0
#define FLT_INFLUENCE  0.5

int FLT_D[FLT_lag],FLT_fildy//,FLT_c=0;

static int get_mean(intbuf,int N) { int x=0; for(int i=0Ni++) += buf[i]; return x/N; }
static 
int get_stdd(intbufint meanint N) { int x=0; for(int i=0,d;i<N;i++) { d=mean-buf[i]; x+=d*d; } return sqrt(x/N); }

static 
void FLT_push(int x) { if(FLT_c<FLT_lagFLT_c++; else { for(int i=1;i<=FLT_lag;i++) FLT_D[i-1]=FLT_D[i]; } FLT_D[FLT_lag]=x; }

int FLT(int x) {
    if(
FLT_c FLT_lag) { FLT_fildy=xFLT_push(x); return 1; }

    
FLT_push(FLT_fildy);
    
int mu=get_mean(FLT_D,FLT_lag);

    if(
abs(x-mu) <= FLT_THRESHOLD*get_stdd(FLT_D,mu,FLT_lag)) { FLT_fildy=x; return 1; }

    
FLT_fildy=((FLT_TOL*FLT_INFLUENCE x) + (FLT_TOL*(1-FLT_INFLUENCE) * FLT_fildy)) / FLT_TOL;
    return (
mu) ? 0;
}


chuk.h


<?php
int FLT_c
;
int FLT(int x);

Вопреки сомнениям скептиков, этот код исправно работал. Ниже на картинке пара пробегов двухоборотного замка туда и обратно от заедания до заедания:

Эту картинку передает по WiFI чип 8266 в браузер, по аяксу график плавно плывет и достраивается. Красные эпюры - ток мотора, как мы помним. Синяя линия - результат математической оценки по анализу текущего момента: всплески и провалы. Нас, собственно, интересуют всплески. Зеленая линия - идеал: моменты, когда двигается щеколда замка. Как видим, даже малозаметные всплески в нужных местах исправно отмечаются всплесками синей линии, совпадающей с зеленой. Вы наверно спросите, откуда она взялась, зеленая? Ну, честно говоря, у меня в замке все-таки есть кнопка состояния. Она размыкается в момент, когда приподняты железяки, запирающие защелку, и соответственно, идет её движение - выдвигание или убирание (сорри, не помню правильную слесарную терминологию):

Короче, кнопка-то есть. По крайней мере, иногда. Я ее сперва поставил, потом снял, когда понял, что можно мерять токи мотора, сейчас поставил опять, чтобы на графике отображать эталон. Но кнопка мне не нравится, потому что это неспортивно. Ну правда же, на дворе 21 век, все предыдущие века толпы седых математиков думали, карандаши грызли, в безумие впадали, и всё для чего? Чтобы теперь, в век, когда мощный компьютер умещается в чипе ESP8266 размером с ноготь, припаивать в замок лишние кнопки? Не хочется :)

Однако, и скептики в комментариях были тоже совершенно правы. Система работает практически без ошибок, но в ситуации полной пробежки: мы включили замок, и вот он пошел вращаться два своих оборота и далее до упора. Потом обратно. И там все очень хорошо работает. Но в реальности задача немного иная: надо быстро защелкнуть замок (например, на один оборот, потом можно подождать с полчасика и еще на один). А потом на этот оборот надо быстро повернуть обратно и открыть. Понятно, что при закрытии замка мотор должен остановиться как можно раньше после выполнения работы - чтобы, вернувшись, человек не ждал, пока мотор будет долгие секунды подъезжать обратно, чтобы отщелкнуть замок. И вот тут возникает проблема. Потому что при старте мотора сам собой вылезает огромный ток старта - оно и понятно, система инерционная, на мотор большая нагрузка, пока не раскрутит все шестерни. Ну, пик старта я просто отсекаю - не измеряю пару секунд после старта. А дальше подъезжает пик поворота защелки. И его система зачастую не видит, потому что не успевает набрать статистику ровного хода для своих дисперсий и прочих вычислений:

На этой трагической ноте я мог бы закончить этот пост, и подытожить, что, увы, без кнопки не обойтись. Но я только что для прикола поставил значение размера буфера FLT_lag равным 5 вместо 10, и вообще всё заработало идеально:

Не знаю, надолго ли, будем наблюдать. Но на данный момент математика победила. Слава математике! Спасибо всем за советы и сомнения!

PS: Кому интересно, вот полный скетч для Ардуины-8266 - добавить к вышеупомянутому chuk.c/chuk.h, и можете повторить эксперимент с замком сами ;)

показать основной скейтч ZAMOK.ino

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

#include <EEPROM.h>

#include <Ticker.h>

#include "chuk.c"

const charssid "lleo-home-wifi";
const 
charpassword "le,byeirf";
MDNSResponder mdns;

ESP8266WebServer server(80);

#define led  2
#define led2 16
#define INPUTKN 12
#define MOTO1 4
#define MOTO2 5
#define HALL 13
#define INP0 A0

#define AnalogReadBuffer_MAX 250
int AnalogReadBuffer_count=0;
unsigned int AnalogReadBuffer[AnalogReadBuffer_MAX];
unsigned int AnalogReadSTD[AnalogReadBuffer_MAX];
char INPUTKNRead[AnalogReadBuffer_MAX];

uint8_t A0_log=0;
uint8_t timer_blink=0// Таймер http://www.pvsm.ru/arduino/111541
unsigned int T1_counter=0;
char motor_go=0;
char motor_upert=0;

  
Ticker blinker;
  
void timerIsr() { T1_counter++;
    if(!
A0_log) return;
    
digitalWrite(led,(timer_blink++)&1);
    if(
AnalogReadBuffer_count<AnalogReadBuffer_MAX) {
      
int x=analogRead(A0),y=FLT(x); if(y==2motor_upert=1;
      
INPUTKNRead[AnalogReadBuffer_count]=digitalRead(INPUTKN);
      
AnalogReadBuffer[AnalogReadBuffer_count]=x;
      
AnalogReadSTD[AnalogReadBuffer_count++]=y;
    }
  }

int i,pc=0;

// DATA in EEPROM

char motor_pos=1// последняя позиция мотора
unsigned int Tugo200=250// порог поворота
unsigned int Tugo500=500// порог упора
unsigned int Skip500=200// интервал оценки
unsigned int DelayOtPoroga=200// задержка от порога
unsigned int DelayOtStarta=200// задержка от старта
unsigned char MotorSide=1// прямая-обратная установка в дверь
unsigned char motor_flag_stop=0;

unsigned int eeprom_count=0;
unsigned int eeprom_Tugo200=2// 2б
unsigned int eeprom_Tugo500=4// 2б
unsigned int eeprom_Skip500=6//2,
unsigned int eeprom_DelayOtPoroga=8//2,
unsigned int eeprom_DelayOtStarta=10//2,
unsigned int eeprom_MotorSide=12// 1
unsigned int eeprom_motor_pos=13// 1


// EEPROM
int f_read(int i) { return EEPROM.read(i); }
int f_save(int i,unsigned char v) { EEPROM.write(i,v); EEPROM.commit(); EEPROM.end(); }
int f_read_int(int i) { return (EEPROM.read(i+1)<<8)+EEPROM.read(i); }
int f_save_int(int i,int v) { EEPROM.write(i+1,highByte(v)); EEPROM.write(i,lowByte(v)); EEPROM.commit(); EEPROM.end(); }

void motor(uint8_t x){
  if(!
x) { digitalWrite(MOTO1,0); digitalWrite(MOTO2,0); motor_go=0; return; }
  if(
x==1) { if(motor_pos>1) return; digitalWrite(MOTO1,1);digitalWrite(MOTO2,0); }
  else { if(
motor_pos==0) return; digitalWrite(MOTO1,0);digitalWrite(MOTO2,1); }
  
motor_go=(MotorSide==1)?x:-x;
  
motor_upert=0T1_counter=0motor_flag_stop=0;
}

void handleRoot() {
  
digitalWrite(led,1);
  
String s="<!DOCTYPE html><html><head><title>LEOPOLD</title>";
s+="<style>RINPUT {padding:20px;}\n#er {color:red;}</style>";
s+="<script type='text/javascript' src='http://home.lleo.me/projects/arduino/rg.js'></script>";
s+="<script>";
s+="function clean(id){ if(idd(id)) setTimeout(\"var s=idd('\"+id+\"');if(s)s.parentNode.removeChild(s);\",40); }";
s+="function idd(id){ return typeof(document.getElementById(id))=='undefined'?false:document.getElementById(id); }";
s+="function idie(s){ var e=idd('buka'); e.innerHTML=e.innerHTML+s; }";
s+="function printmas(){ var s0=s1=s2='<p>',p=line.originalData,i; for(i in p) { s0+=p[0][i]+','; s1+=p[1][i]+','; s2+=p[2][i]+','; } idie('<hr>'+s0+s1+s2+'<hr>'); }";

s+="var RGON=0; function RG(a,b,kn){ if(a===false||RGON==0) return RGON=0;";
s+="  if(a.length) { for(var i in a) { var c=a[i]*3+1,d=b[i]*100+400,k=(kn[i]&1)*100+850; if(c>1024)c=1024; if(d>1024)d=1024;";
s+="     line.originalData[0].unshift(c); line.originalData[0].pop(); line.originalData[1].unshift(d); line.originalData[1].pop(); line.originalData[2].unshift(k); line.originalData[2].pop();";
s+="} RGraph.SVG.redraw(); }";
s+="    setTimeout(\"AJAX('getlog')\",200);";
s+="}";

s+="function RG_init(){";
s+="line=new RGraph.SVG.Line({id:'rg',";
s+="data:[RGraph.SVG.arrayFill({array:[],value:0,length:300}),RGraph.SVG.arrayFill({array:[],value:0,length:300}),RGraph.SVG.arrayFill({array:[],value:0,length:300})],options: {";
s+="gutterLeft:40,yaxisMax:1024,yaxisMin:0,backgroundGridVlinesCount:30,filled:[true,false,false],\ncolors:['#c00','#00c','#0c0'],\nlinewidth:3,\nfilledColors:['rgba(255,0,0,0.25)','rgba(0,0,255,0.25)','rgba(0,255,0,0.25)'],\nshadow:true}}).draw();";
s+="}";

s+="function AJAX(x){\n";
s+="    var request=new XMLHttpRequest(); request.onreadystatechange=function(){ if(this.readyState==4 && this.status==200 && this.responseText!=null)";
s+="       try{eval(this.responseText);}catch(e){alert('Error Ajax');}";
s+="    }; request.open('GET',x+(/\\&/.test(x)?'&':/\\?/.test(x)?'':'?')+'rand='+Math.random(),true); request.send(null);";
s+="}\n";

s+="var m=[0,1,2,3,4,5,10,12,13,14,15,16],i; for(i in m) document.write((\" <input type=button value='PIN?n=#&on=1' onclick='bu(this)'> <input type=button value='PIN?n=#&on=0' onclick='bu(this)'>\").replace(/#/g,m[i]));";
s+="function bu(e) { AJAX(e.value); }";

s+="</script>";

s+="</head><body onload='RG_init();'>";

s+="<h1>LEOPOLD</h1>";

s+="<center><div style='width:95%;height:400px' id='rg'></div></center>";
s+="<div><input type=button value='A0_ON' onclick='bu(this)'>   <input type=button value='A0_OFF' onclick='RGON=0;bu(this)'></div>";
s+="<p><input type=button value='STOP' onclick='bu(this)'>     <input type=button value='MOTOL' onclick='bu(this)'>   <input type=button value='MOTOR' onclick='bu(this)'>";

s+="<p><input type=button value='OPEN' onclick='bu(this)'>     <input type=button value='CLOSE' onclick='bu(this)'>";

s+="   <input type=button value='PRINT' onclick='printmas()'>";

s+="<div id='er'></div><div id='buka'></div>";
s+="</body></html>";

  
server.send(200,"text/html",s);
  
digitalWrite(led,1);
}

void handleNotFound(){
  
String s "File Not Found\n\n";
  
+= "URI: ";
  
+= server.uri();
  
+= "\nMethod: ";
  
+= (server.method() == HTTP_GET)?"GET":"POST";
  
+= "\nArguments: ";
  
+= server.args();
  
+= "\n";
  for (
uint8_t i=0i<server.args(); i++){ += " " server.argName(i) + ": " server.arg(i) + "\n"; }
  
server.send(404"text/plain"s);
  
digitalWrite(led,1);
}

void setup(void){

  
pinMode(ledOUTPUT); digitalWrite(led,1);
  
pinMode(led2OUTPUT); digitalWrite(led2,1);

  
pinMode(MOTO1,OUTPUT); digitalWrite(MOTO1,0);
  
pinMode(MOTO2,OUTPUT); digitalWrite(MOTO2,0);

  
pinMode(HALL,INPUT_PULLUP);

  
pinMode(INPUTKN,INPUT_PULLUP);

  
pinMode(INP0,INPUT);

  
// pinMode(tuk, OUTPUT);

  
Serial.begin(115200);

  
Serial.println("RESET");

  
WiFi.begin(ssidpassword);
  
Serial.println("");

  
// Wait for connection
  
while(WiFi.status() != WL_CONNECTED) {
    
digitalWrite(led,pc); pc=(!pc)&&1digitalWrite(led2,pc); delay(200);
    
Serial.print(".");
  }
  
digitalWrite(led,1);
  
digitalWrite(led2,0);

  
Serial.println("");
  
Serial.print("Server ESP #"); Serial.println(ESP.getChipId());
  
Serial.print("Connected to "); Serial.println(ssid);
  
Serial.print("IP address: "); Serial.println(WiFi.localIP());

  if(
mdns.begin("esp8266"WiFi.localIP())) {
    
Serial.println("MDNS responder started");
  }

 
server.on("/"handleRoot);

 
server.on("/ping",[](){ server.send(200,"text/plain","OK");});

 
server.on("/MOTOL",[](){ motor(1); server.send(200,"text/plain","idie('MOTOL<br>')"); Serial.println("MOTOR 1"); });
 
server.on("/MOTOR",[](){ motor(-1); server.send(200,"text/plain","idie('MOTOFF<br>')"); Serial.println("MOTOR -1"); });

 
server.on("/STOP",[](){ motor(0); server.send(200,"text/plain","idie('STOP<br>')"); Serial.println("MOTOR OFF");});

 
server.on("/A0_ON",[](){ A0_log=1AnalogReadBuffer_count=0FLT_c=0;

// for(int c=0;c<10;c++) AnalogReadBuffer[AnalogReadBuffer_count++]=10;

 
server.send(200,"text/plain","idie('A0_ON<br>'); RGON=1;RG([]);"); Serial.println("A0_ON"); });
 
server.on("/A0_OFF",[](){ A0_log=0digitalWrite(led,1); AnalogReadBuffer_count=0server.send(200,"text/plain","idie('A0_OFF<br>'); RGON=0;"); Serial.println("A0_OFF"); });

 
server.on("/getlog",[](){ if(!A0_log && AnalogReadBuffer_count) return server.send(200,"text/plain","RG(false);");
      
String s="",d="",k=""; for(i=0;i<AnalogReadBuffer_count;i++) {
        
s+=(i?",":"")+String(AnalogReadBuffer[i],DEC);
        
d+=(i?",":"")+String(AnalogReadSTD[i],DEC);
        
k+=(i?",":"")+String(INPUTKNRead[i],DEC);
      }
      
AnalogReadBuffer_count=0;
      
server.send(200,"text/plain","RG(["+s+"],["+d+"],["+k+"])");
 });

 
server.on("/getset",[](){
   
String s="clean('sform');idie(\"<form id='sform' action='/set'>";
   
s+="<br>Max-do: <input name=Tugo200 value='"+String(Tugo200,DEC)+"'>";
   
s+="<br>Max-end: <input name=Tugo500 value='"+String(Tugo500,DEC)+"'>";
   
s+="<br>Skip: <input name=Skip500 value='"+String(Skip500,DEC)+"'>";
   
s+="<br>Delay-do: <input name=DelayOtPoroga value='"+String(DelayOtPoroga,DEC)+"'>";
   
s+="<br>Delay-start: <input name=DelayOtStarta value='"+String(DelayOtStarta,DEC)+"'>";
   
s+="<br>Motor-side: <input name=MotorSide value='"+String(MotorSide,DEC)+"'>";
   
s+="<p><input type=submit value='SAVE'></form>\");";
   
server.send(200,"text/plain",s); Serial.println("OK");
  });

 
server.on("/set",[](){
   
i=server.arg("Tugo200").toInt(); if(i<50||i>400) { server.send(200,"text/plain","er('Error Max-do (50..400)')"); return; } Tugo200=i// EEprom
   
i=server.arg("Tugo500").toInt(); if(i<50||i>800) { server.send(200,"text/plain","er('Error Max-end (50..800)')"); return; } Tugo500=i// EEprom
   
i=server.arg("Skip500").toInt(); if(i<1||i>5000) { server.send(200,"text/plain","er('Error Skip (1..5000)')"); return; } Skip500=i// EEprom
   
i=server.arg("DelayOtPoroga").toInt(); if(i<50||i>800) { server.send(200,"text/plain","er('Error Delay-do (50..800)')"); return; } DelayOtPoroga=i// EEprom
   
i=server.arg("DelayOtStarta").toInt(); if(i<50||i>800) { server.send(200,"text/plain","er('Error Max do (50..800)')"); return; } DelayOtStarta=i// EEprom
   
i=server.arg("MotorSide").toInt(); if(i!=1&&i!=0) { server.send(200,"text/plain","er('Error Motor-side (0 or 1)')"); return; } MotorSide=i// EEprom
   
server.send(200,"text/plain","clean('sform')");
 });

 
server.on("/PIN",[](){
    
char i=server.arg("n").toInt(),on=server.arg("on").toInt();
    
pinMode(i,OUTPUT); digitalWrite(i,on);
    
String s="Pin #"+String(MotorSide,DEC)+" "+(on?"ON":"OFF");
    
server.send(200,"text/plain","idie('"+s+"<br>')"); Serial.println(s);
 });

 
// 


  
server.onNotFound(handleNotFound);

  
server.begin();
  
Serial.println("HTTP server started");


  
blinker.attach(0.05,timerIsr);
  
digitalWrite(led,1);
}


int top=0;
int an=0;


void loop(void){
  
server.handleClient();

  if(
motor_go) {
    
an=0;
    if(
an>400 || T1_counter>50motor(0); // таймаут или адский ток
    
else if(!motor_flag_stop && T1_counter<3motor_upert=0// первые заедания проезжаем
    
else if(motor_upert) {
      if(
motor_flag_stop) {
        if(
T1_counter>13motor(0); // выдержали паузу - и остановили
      
} else { motor_flag_stop=1T1_counter=0; } // сбросить счетчик и начать отсчет паузы для остановки
    
}

// else { if(digitalRead(HALL)==0) motor(1); }

}
<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Mac Safari Chrome
 Москва
2
0
tucher
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
«Но кнопка мне не нравится, потому что это неспортивно. Ну правда же, на дворе 21 век, все предыдущие века толпы седых математиков думали, карандаши грызли, в безумие впадали, и всё для чего?»
Это более чем спорный подход для этой конкретной задачи:)
Хотя главное, чтобы и задача решилась, и интересно было.
Linux Ubuntu Firefox
 Москва
2
0
Леонит Каганофф
Не, ну правда - кнопкой я управлял моторчиками в 8 классе, это было 30 лет назад. Сейчас мне интересно поработать с вычислительным анализом сигналов - хотя бы в таком простом варианте.

Вы, кстати, в курсе, как современная стиральная машина взвешивает бельё? Наливает воду по чуть-чуть и смотрит, как меняются токи ток мотора барабана. Конечно тоже можно весы поставить электронные или кучу кнопок с разной силой нажатия... Но мысль-то человеческая должна работать? ;)
Windows Firefox
 Киев
12
0
Кондыбас
Вот конкретно в данном отдельно взятом случае все опирается на нуль-гипотезу о неизменности механических характеристик замка и привода с редуктором.

А завтра похолодает и масло загустеет, а затем потеплеет и масло разжижится, а полотно двери расширится и начнет подклинивать, а потом от влажности заржавеют оси шестерней, а под конец высохнет кондесатор в блоке питания и вместо стабилизированых 12В на мотор пойдет хз что...

В порядке суходрочки оценивать протекание процессов по косвенным - увлекательно, но если задаваться военно-прикладным вопросом, то нужно снимать первичные данные. Положение ригеля. Вот то, что зеленым отображается. Вот тогда можно быть относительно уверенным, что девайс будет делать ожидаемое.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Ну да, я кнопка конечно вечная. Через полгода не стопчется от постоянных ударов металла, не отклеится, не перекосится.
Linux Ubuntu Safari Chrome
 Белая Церковь
6
0
ufm3
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Кнопка, конечно, не вечная.
Поэтому нужно работать по кнопке (так как она даёт наиболее точный результат), а кнопку контролировать уже по току.
И если кнопка отказывает - уходить в "аварийный режим", при котором:
1. Вопить об отказе кнопки.
2. Выполнять минимальный набор (полное открытие и закрытие), который можно более-менее по току гарантированно контролировать.
Windows Safari Chrome
 Красноярск
0
0
balal
Леонид, данная модель кнопки неудачная, не для этого она предназначена, и со временем имеет большую вероятность начать глючить (из опыта общения с такими кнопками). Для такого применения или советские кнопки МП1 - МП9 или их аналоги, включая кнопки для мышей, либо пара или даже один (прямо детали модет касаться) подпружиненный контакт как от реле.
Ну вот, позанудствовал...
Linux Ubuntu Firefox
 Москва
6
0
ilya-ya
Вместо не вечной кнопки нужно поставить вечную оптопару
Windows Firefox
 Москва
0
0
alco
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
а оптопара запылится
Windows Safari Chrome
 Москва
1
0
Михаил
Щётку для протирки оптопары на привод замка.
Linux Safari
 Москва
0
0
id334554402
тогда сотрется ))
Windows Opera
 Киев
0
0
Онтеблогир
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
SMS об этом.
Windows Safari Chrome
 Москва
1
0
Max
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
а как же ученый по фамилии Холл?
и его датчик?
Сейчас любой автомобиль считает огромное количество импульсов ежесекундно при помощи "шестеренки" на двигателе и дачка Холла рядом. И это в сложных погодных условиях и грязи.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Используется тоже, но для другого - датчик закрытия самой двери.
Windows Firefox
 Щелково
0
0
abrrvalk
В автомобиле как правило обычная катушка с проволокой. Датчик холла я помню только на "девятке".
Windows Safari Chrome
 Москва
0
0
Max
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
УПС...
Похоже я погорячился...
Мне всегда казалось что датчик положения коленвала тоже датчик холла, а оказывается это просто катушка.
Безобразие, позор мне.
-------------------------
А вот и нет. Пошел учить мат часть и выяснил что правы мы оба. Есть два типа этих датчиков Индуктивности и Холла. Вот первая ссылка из гугла
http://mlab.org.ua/articles/sensors/99-sensors-inductive-hol[...]
Windows Firefox
 Москва
2
0
Johny-----------
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
а вы леондин, как человек с детства лазающий в лифтовой механике должны помнить что такие ответственные кнопки дублируются.
а так же при неправдоподобных сигналах с кнопки система должна сообщать зажигать "check engine" и переходить в аварийный режим работы ( тянуть ригель по времени )
Linux Ubuntu Firefox
 Германия
1
0
gehrmann
Что-то идея про потенциометр, хотя она самая надёжная и ясная, прошла незамеченной.
Windows Firefox
 Щелково
0
0
abrrvalk
Движковый потенциометр приколхозить особенно удобно. Но он далеко не вечный.
Windows Safari Chrome
 Харьков
0
0
eq
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Такая кнопка на куске скотча не проработает полгода.
Нормальный недорогой концевик, типа Omron D2F, переживет несколько десятков замков.
Windows Firefox
 Киев
0
0
Кондыбас
Еслишо, то "завтра похолодает" - это была фигура речи, а не пророчество.
Windows Firefox
 Днепропетровск
0
0
Theoristos1
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я б сделал две насечки на стержне и индукционный датчик.
Хоть он и энергию жрет.
Mac Safari Chrome
 Нидерланды
1
0
tucher
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Вот-вот я именно про это и говорил:) А стиральная машина — всё другая история, тут аналогия не очень уместна.
Windows Safari Chrome
 Домодедово
4
0
id
Ну просто это две совсем разные задачи: "поработать человеческой мыслью интереса ради" и "сделать надежный замок" :)

Так-то я и не сомневался, что задача "увидеть пик 10 раз подряд" - решаема. Решаема, конечно. И 100 раз подряд она сработает. Я лишь сомневаюсь в решаемости задачи "Обеспечить надежность работы системы на уровне не меньше, чем у простого контакта".

Да, и еще: сейчас мотор новый, работает чистенько... Но что будет, когда пластиковая задняя крышка слегка поплывет, подшипники поизносятся, а щеточный узел подразмочалится?
Linux Safari
 Москва
1
0
id334554402
поэтому я никак не могу выкинуть бош 95 года. механика наше все.
Windows Safari Chrome
 Fremont
1
0
AYOUNG
Моя старая стиралка ASKO взвешивает бельё ещё проще.
Наливает воды до нижнего уровня, делает несколько оборотов, снова доливает до уровня. Так до семи циклов. И вот сколько воды впиталось, столько и белья. В пустом барабане вода после прокрутки не убывает, некуда впитываться. В полностью мокром тоже не убывает. Время дополнительного долива известно, скорость подачи воды считается по первому наливу.
Windows Firefox
 Санкт-Петербург
5
0
тупиточка
Умные технари высмеяли поделку Каганова, а хитрый Ллео взял и применил алгоритм к торговле биткойнами, для анализа курса на бирже. И теперь bot-esp8266 зарабатывает больше технарей.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Биткоин-то сегодня до 1500 скакнул.
Windows Firefox
 Москва
2
0
konachodas
Так и че алгоритм-то говорит? Это локальный максимум? Продавать?
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Флуктуации. Упадет еще, но в целом рост.
Windows Firefox
 Вьетнам
0
0
безобразие
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Кажется, кто-то следит за рынком.
В эфир надо вкладывать, в эфир.
Windows Firefox
 Калуш
2
1
Val
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Про то, что гумманитариям не место в инженерии, здесь уже писали?..
Linux Safari Chrome
 Москва
5
1
Леонит Каганофф
По орфографии видим, что не гуманитарий :)
Windows Firefox
 Калуш
1
0
Val
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Смотрю на код.
1. Про форматирование здесь уже писали. Воспользуйтесь достижениями народного х-ва, например: http://format.krzaq.cc/
2. Файл "chuk.h" по мнению автора входит в стандартную поставку всех С++ компилеров, поэтому его приводить не надо.
3. Объявлять функции статиками в отдельно взятом (может слитно пишется, я хз) от класса сорце - это хипстерство? =)
Linux Safari Chrome
 Wisconsin Rapids
0
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
По поводу 1, совсем немногие способны воспользоваться подобными советами, да еще сказать об этом публично, да еще когда совет был так сформулирован.

Что касается 3, то ЛЛео ж готовится в коммерческие программисты, привыкает отделять интерфейс от (секретной проприетарной) имплементации. :) А если серьезнее, подозреваю, что просто привык так делать еще в те времена, когда не очень понимал, что компьютер делает со всеми этими сорцами.
Mac Safari
 Израиль
2
0
braintunic
> 2. Файл «chuk .h» по мнению автора входит в стандартную поставку всех С++ компилеров, поэтому его приводить не надо

То что лично вы не смогли найти этот файлик на полстранице текста, ещё не значит, что его нет ;)
Windows Firefox
 Калуш
0
0
Val
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я понял: это технология #include методом Суслика =)
Windows Firefox
 Калуш
0
0
Val
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А ты уверен, что лежал? :) А если нотариальный скриншот? :)
Windows Firefox
 Калуш
0
0
Val
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ладно, допускаю, что мог проглядеть. Пусть ллео скажет - был он там или не был. Он человек честный, ему можно верить.
Mac Safari
 Израиль
2
0
braintunic
> Он человек честный, ему можно верить

Ни в коем случае!
Каганову верить нельзя никогда и ни в чем ;)

Мне можно.
Файлик лежал с самого начала.
Linux Safari Chrome
 Москва
1
0
Леонит Каганофф
Молодец, мальчик, по орфографии видим, что не гуманитарий :)
Windows Firefox
 Калуш
1
0
Val
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я исчо, и пунктуацию не - умею.
Linux Safari Chrome
 Mt Laurel
0
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
А откуда понятно, что мальчик?
Windows Firefox
 Калуш
1
0
Val
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Тут противоречивая ситуация. С одной стороны я не девочка. С другой - мне 39 лет. Казалось бы, при чем тут Остап Бендер...
Linux Safari Chrome
 Wisconsin Rapids
0
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я подозреваю обычный культурно сформированный неосознанный мужской шовинизм. :)
Mac Safari
 Израиль
0
0
braintunic
Не мужской шовинизм, а чистая статистика.

По статистике, среди комментаторов в блоге ЛЛео мужчин примерно 95%, а среди комментирующих по теме программирования - 99.4% ;)
Linux Safari Chrome
 Wisconsin Rapids
0
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ну тогда показывайте статистику и вашу методологию.
Mac Safari
 Израиль
0
0
braintunic
Чутьё Потолок - вот моя методология!
Windows Firefox
 Калуш
1
0
Val
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Алсо, подростковый тип поведения легко детектится. Не завидуйте.
Windows Firefox
 Санкт-Петербург
0
0
Tarn
Кстати, а с чего это Лео гуммманитарий-то? Он же какой-то весьма элитный техникум с Фывой заканчивал, если не ошибаюсь, где учат паять и уметь в транзисторы. Я вот очень нехорошо завидую обладателям таких не лишних умений. И с отвращением и классовой ненавистью вынужден признать, что хорошее советское профтехобразование зачастую гораздо полезнее технического высшего. Самого-то меня на примате в ЛЭТИ много чему обучали, а по факту, умею только кнопки давить. То есть, обучали-то конечно (и весьма неплохо!) всяким фильтрам Калмана, но это на хуй никому не надо. Так что, я это давно и плотно забыл, даже по теме поста сказать нечего. Всякие BDSM Оракыл наше всё.
Windows Safari Chrome
 Петрозаводск
1
0
igronus
Уважаю результат, но ужасное форматирование кода делает его совершенно нечитабельным. Давно ведь придумали всякие нотации-хуяции, отступы и переносы строк. Тем более современные редакторы и среды разработки делают почти всю работу за вас.

Сравните сами, одна и та же функция, но по-разному записанная.



Windows Safari Chrome
 Петрозаводск
0
0
igronus
Лол, саблайм накосячил с первым ифом. Но в целом идея, надеюсь, понятна.
Linux Safari Chrome
 Москва
1
1
Леонит Каганофф
Я форматирую код так, как удобно мне. Мне удобно видеть сущности кода, а не верстку синтаксиса. Если вы не можете увидеть, что делает код, глянув на строку - увы.

Знаю людей, которые и стихи не могут читать, форматированные в один абзац - не чувствуют рифмы. Для них рифма - это там, где конец строки. Иначе каша и ничего не понятно :) Ну а дети еще не умеют читать слова мелким шрифтом без расставленных ударений.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
а Джим Хаккер бы смог!
Linux Safari Chrome
 Wisconsin Rapids
0
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Поэтому печеньку тому, кто переведет Леонида на Питон, там минимальную культуру форматирования кода требует сам язык. К счастью, прошли времена, когда PHP был каким-то специально удобным языком для server-side web development. Теперь как угодно можно. :)
Linux Safari Chrome
 Тольятти
1
0
binarydata
А теперь главный вопрос: пробелы или табы? )
Mac Safari
 Израиль
0
0
braintunic
А можно компромисс - я буду нажимать таб, а в файл будут записываться пробелы?)
Mac Safari
 Израиль
5
0
braintunic
> Я форматирую код так, как удобно мне

Имеешь полное право - пока программируешь в одиночку.
Но если таки станешь работать в команде - придётся использовать тот стиль программирования, который там принят.
Иначе будешь тормозить всю машину.

Code review, code coverage, configuration management, defect tracking - все это тебе практически не нужно в одиночку, но станет необходимым в команде.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Команды разные бывают. Когда я только начинал программировать 30 лет назад, у нас в командах писали каждый оператор на отдельной строке.

MOV (R1)+,R3
INC R3
XOR R3,#377
JMP METKA

А сейчас такие команды, где писать код вообще не принято. Сейчас принято найти подходящий фреймворк и настроить, разобравшись с конфигом в XML.
Mac Safari
 Израиль
0
0
braintunic
> сейчас такие команды, где писать код вообще не принято

Подозреваю, что в такой "команде" ты работать не захочешь ;)
Linux Safari Chrome
 Москва
1
0
Леонит Каганофф
А вдруг там зарплату дают?
Linux Safari Chrome
 Mt Laurel
1
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Для максимизации вероятности нахождения зарплаты нужно наверное JS учить. :) Хотя... PHP тоже на удивление высоко:

https://stackoverflow.com/insights/survey/2017#technology-pr[...]
Mac Safari
 Израиль
1
0
braintunic
> Для максимизации вероятности нахождения зарплаты ... JS ... PHP

С точностью до наоборот!

Вы посмотрели на таблицу "Most Popular Technologies" - и действительно среди самых популярных языков (с наибольшим числом программистов) JS стоит на 1-м месте (62%), а PHP на 6-м месте (28%).
Но это как раз говорит о переизбытке таковых специалистов на рынке и о гигантской конкуренции на каждое место (вплоть до одновременного прохождения интервью большой группой)!

А вот в более релевантной таблице "Top Paying Technologies" (самые оплачиваемые по США) JS уже стоит лишь на 17-м месте, а PHP - на 19-м месте (третьем с конца).

Толпа конкурентов, а платят - шиш ;)
Linux Safari Chrome
 Wisconsin Rapids
0
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Давайте будем точнее! :) То, что JS программистов много не говорит, что там конкуренция больше. Впрочем, это не говорит и о том, что она меньше. Так что мое утверждение строго говоря неполно, но оно все же верное, с дополнительным, довольно естественными предположением, что если конкуренция везде примерно одинакова, то чем больше доступно попыток, тем выше вероятность успеха. Именно это я имел ввиду. Про величину зарплаты я не говорил, только про вероятность ее получения.

Ваше утверждение тоже неверно: величина зарплаты не влияет на вероятность ее получения в предложенном вами случае.
Windows Firefox
 Москва
0
0
Ilia
А где Fortran в таблице? У-у-уу...
Mac Safari
 Израиль
0
0
braintunic
> А где Fortran

Выпал в осадок, вместе с Алголом, PL/1 и Фортом ;)

В реальности, европейские физики как писали свои программы на Фортране так и будут писать - ещё лет восемьдесят.
Ядерная физика, астрофизическое моделирование, гидродинамика сглаженных частиц, молекулярная динамика, климатические модели - во всех этих областях Фортран по-прежнему царь и бог.

Просто европейские физики не участвуют в таких вот опросах ;)
Windows Safari Chrome
 Нижний Новгород
0
0
tartaglione
У меня братан заграничный физик, работает в Норвегии с американским паспортом. Что-то в атмосфере, молнии и т.п. Они на Питоне пишут, он мне даже книжку подкинул, Fluent Python, которую я пока не осилил. Хотя теперь мне самому Питон понадобился, так что прочту ещё, наверно, и эту книжку.
Windows Firefox
 Санкт-Петербург
2
0
Tarn
Как-то старый программист с моей работы, вспоминая советские ламповые времена, рассказывал про одного шизика, который программы на PL/1 сплошняком хуячил, даже без пробелов, благо компилятор всё сожрёт. Ну, то есть, испишет очередную строчку этой поебенью, в восьмидесятый символ упрётся рогом, допустим, на "BE", а "GIN" уже с новой строки пошло. Если правку какую внести надо, то всё, что ниже места правки, подлежит повторной пертурбации.
Очень большая экономия места и пробелов у него выходила, перфокарты, наверно, берёг. Зато, понимать и править его программы умел только он сам.
Windows Safari Chrome
 Домодедово
5
0
id
Не "зато", а "к тому же".
Как такого сократишь?
Linux Safari Chrome
 Wisconsin Rapids
1
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ну в этом и дело: все время все меняется. Люди склонны переставать учиться как только им начинает казаться, что они знают достаточно, программисты в том числе, поэтому многие застревают в разных моментах прошлого. Лучшие учатся и в том числе переучиваются непрерывно и много. Но это трудно и неприятно, хоть и приводит к результатам.
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
Вы реально считаете, что кому-то нужно УЧИТЬСЯ форматировать код в столбик и разделять стихи на строки?
Linux Safari Chrome
 Wisconsin Rapids
1
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Про стихи у меня нет мнения. :)

Про код - некоторым надо, кому-то нет, но я ведь "учиться" не в этом буквальном узком смысле имел ввиду. Дело не в том, что вы не умеете - то есть реально не можете написать форматированный код, а в том, что вы этого не делаете, не считаете нужным. Может, это глубоко обдуманное и хорошо информированное решение, а может привычка. Вам виднее.
Windows Firefox
 Санкт-Петербург
1
0
Tarn
Встряну. Тут ведь что получается? Как уже говорилось, каждый имеет полное право писать как хочет и никому ничего не должен, кто б спорил? Но. И ваши программы и ваши неформатированные стихи читать без напряга сможете только вы, именно потому, что они ваши. Они у вас вообще в голове хранятся, можно и на лист/экран почти не смотреть. А вот другие товарищи будут спотыкаться и напрягать свой лексический анализатор совершенно гарантированно.

Что же касается УЧИТЬСЯ, то вам-то это точно без надобности, но не забывайте, что в любых делах, а тем более в творчестве, мотивы и намерения вообще не играют никакой роли, важен только результат. И лет через сто пятьдесят, когда умрёт последний лично знавший Лео поэт и программист, все обязательно скажут, Скажут! что Каганов ни хрена не умел форматировать стихи и программы.
Windows Firefox
 Санкт-Петербург
1
0
Tarn
Так Ильича-то уже отформатированного напечатали.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Почему же? Я без проблем читаю собранные в один абзац стихи Быкова, Чмырновича и других профессионалов, и они мои читают без проблем и запинки. Верстка - ценное подспорье новичка и дилетанта, вот я о чем толкую.
Windows Firefox
 Санкт-Петербург
1
0
Tarn
"Я без проблем читаю собранные в один абзац стихи Быкова..."

Вот, значить, у кого вы этой ереси набрались. Он-то, кстати, этим особо не злоупотребляет. "Без проблем..." Хм, я тоже без проблем пельмени в сковородке сварить могу, если нужда заставит. Какие проблемы?

"Верстка - ценное подспорье новичка и дилетанта...".

Так я и думал. Этакое писательское пижонство - я такой офигительный, что даже прозу стихами пишу, а многовековые правила мне не указ, ибо вообще постмодернист.
Windows Safari Chrome
 Рязань
8
0
Кухаренко
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Да млао ли, кто что без побрелм чтиает. Гвоорят, что и бвукы в своалх множо от бдалы рлссаатвять, и все всё пймоут, по кнйраей мере кто ркуссим валедет как рдоынм. Осютда выовд: поядрок бкув - посдопьре нвочкиа.
Windows Firefox
 Санкт-Петербург
2
0
Tarn
Был такой прикол. Если бувкы в солвах не синьло перетсавлять, это незаметно для читающего на данном языке. Потому что хватаешь все буквы слова целиком, а потом уже мозг их расставляет.
Windows Firefox
 Киев
0
0
Кондыбас
Существуют бьютификаторы, умеющие приводить код к любому синтаксически корректному виду. Пишется две спецификации - удобная себе и принятая в конторе. Вуаля.

Мне особенно приглянулся http://uncrustify.sourceforge.net/
Windows Safari Chrome
 Петрозаводск
9
0
igronus
> Если вы не можете увидеть, что делает код, глянув на строку - увы.

В том-то и дело, что все видно, но времени на разбор мозгом тратится гораздо больше. Это как с текстом: попробуйте прочесть пару страниц без абзацев. Потом верните все как было и вздохнете с облегчением.
Linux Ubuntu Firefox
 Германия
1
0
gehrmann
Имена типа:
FLT_*, fildy, *_TOL, *_D, *_c, N, d, *_stdd, mu
не есть гут, так как забываешь их смысл через некоторое время.

В отличие от говорящих:
*_THRESHOLD, *_INFLUENCE
Mac Safari
 Израиль
1
0
braintunic
> Ну правда же, на дворе 21 век, все предыдущие века толпы седых математиков думали, карандаши грызли, в безумие впадали, и всё для чего?

Что-то мне напоминает эта аргументация...
А, точно - старинный фильм "Барбарелла"!

Ну правда же, на дворе 41-й век, все предыдущие века толпы ученых думали - и всё для чего?
Чтобы опять по старинке заниматься чудовищным примитивным первобытным генитальным сексом?
Ведь давно есть специальные таблетки для оргазма - упираешься в партнёра ладонью, глотаешь таблетку и вуаля!


Mac Safari
 Москва
7
0
Дмитрий-3
Так Лео и занимается сексом 21 века с ардуиной и моторчиком, а не этими вашими первобытными генитальными извращениями.
Mac Safari
 Израиль
5
0
braintunic
> Лео и занимается сексом 21 века с ардуиной и моторчиком


Windows Safari Chrome
 Челябинск
0
0
vinny-the-poo
Я уже замучился гуглить, но так и не понял, что может означать "back to pixels" в данном контексте.
Mac Safari
 Израиль
1
0
braintunic


Windows Safari Chrome
 Челябинск
0
0
vinny-the-poo
Ну-ну. Просто спёрли готовую пикчу про Ардуино, вместо чтобы сгенерить оригинальную в бук-генераторе, а теперь не знаете, что ответить.

P.S. И, да! Сам сили.
Mac Safari
 Израиль
0
0
braintunic
А если серьёзно, я думаю, что чувак (тот кто сгенерировал эту обложку) просто переиначил на свой лад известное выражение "back to ashes" или "back to dust" - взятое либо из Библии либо из учения Шивы.

Уверен, что это выражение вы легко сумеете нагуглить ;)
Windows Safari Chrome
 Челябинск
0
0
vinny-the-poo
Ну вот, а я уже поругался.

Если говорить о Библии, то "return to dust" является более каноническим, что затрудняет поиск, если ассоциации не срабатывают сразу. "Back to ashes", похоже, вообще не употребимо, исключительно, как "ashes to ashes".
Windows Firefox
 Израиль
0
0
braintunic
Да, может быть "return to dust" является более каноничным, но уж никак не более употребимым, чем "back to dust".
По моему ощущению, это равноупотребимые выражения в современном английском.

А вот "back to ashes" действительно практически никем не употребляется.

Но мне показалось, что этот чувак выстроил именно такую цепочку: «back to dust» >>> «back to ashes» >>> «back to pixels».
Windows Safari Chrome
 Киев
0
0
Maxfactor9
...В виде кнопки.
Windows Safari Chrome
 Челябинск
5
0
vinny-the-poo
Боже, какой пещерный примитив!
У нас и касаться никого не нужно:



Linux Firefox
 Boulder
4
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> пик старта я просто отсекаю - не измеряю пару секунд после старта

С какой же скоростью он у вас открывается, что сам старт «пару секунд» занимает?!

(Мои советы по исправлению алгоритма вы почему-то проигнорировали, и, судя по картинкам, получили вполне ожидаемый ужас.)
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Извините, мне накидали несколько десятков советов и ссылок, не было возможности осмыслить и реализовать все. А что ужасного в картинках, можете пояснить?
Linux Firefox
 Boulder
1
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я там прокомментировал прямо под вашим «Cделал модельку на PHP». Ищите про гистерезис (и предыдущий комментарий).

Ужасное:



И что «не успевает набрать статистику ровного хода» (если так её набирать, то не удивительно).
Windows Safari Chrome
 Киев
8
0
oblamingo
пиппец - пять экранов кода и сломаные мозги, лишь бы ключ не доставать
Mac Safari
 Израиль
2
0
braintunic
Не сломанные, а проветренные!
Windows Safari Chrome
 Киев
4
0
oblamingo
выветренные
Linux Safari Chrome
 Mt Laurel
2
0
https://plus.google.com/+AlexanderLevitskiy
А я бы пожалуй поставил оптический читатель штрихов на язык замка или tone wheel на вращающийся элемент. Тогда можно будет откалиброваться на минимальное время запирания.
Windows Firefox
 Санкт-Петербург
8
0
Tarn
"Ну, пик старта я просто отсекаю - не измеряю пару секунд после старта".

Ну вы, Леонид, всё-таки мощный колдун. За пару секунд я обе свои двери, на все обороты закрытые, жылезными ключами открываю.
Windows Safari Chrome
 Йошкар-Ола
2
0
artemy12
А некоторые люди хотят скажем, застегивать пуговицы на пиджаке ходулями, и желательно, не глядя. Вы что, против?
"А ты не ходи в наш садик...")))
Windows Safari Chrome
 Санкт-Петербург
0
0
Кошак
О! TNX!
Этот код можно ж ещё ко всякому привинчивать :)
Windows Safari Chrome
 Домодедово
1
0
id
А, сразу-то и не подметил:

> Зеленая линия - идеал: моменты, когда двигается щеколда замка.

Конечно же, нет. Зеленая линия - это моменты, когда движение щеколды разблокировано. А вот о том, двигается она или нет - и куда двигается - мы, на самом деле, можем лишь выдвигать гипотезы. Иными словами, у нас мало того что косвенное измерение - так еще и относительное: счетчик событий есть, а вот начальные условия приходится задавать отпотолочно. "Предположим, что сейчас замок полностью закрыт... Тогда, один импульс будет означать, что замок наполовину открылся..."
Ох :)

...Вместо того, чтобы таки взять - да и поставить концевики на "щеколду" :)
Linux Safari Chrome
 Wisconsin Rapids
1
0
Гена
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Леонид, теперь, когда задача решена, скажите, зачем это: "Но в реальности задача немного иная: надо быстро защелкнуть замок (например, на один оборот, потом можно подождать с полчасика и еще на один)."??? :)
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
Ну, это, так сказать, внутренняя особенность семьи: две квартиры на одной лестничной площадке, постоянно шастаем через двери. Ситуация, когда дверь открывается не 2 раза в сутки, а 30 раз - как раз и требует специальных замков, чипов в руке и т.п. Чтоб открыть дверь, уходя на работу и приходя вечером, - это я б не стал морочиться вообще.
Windows Safari Chrome
 Домодедово
5
0
id
Использовать два замка? Ригельный для "все ушли на фронт", и электромагнитную щеколду - для режима "проходной двор"?
Windows Safari Chrome
 Красноярск
0
0
balal
Ну, при таких условиях точно важна надёжность датчиков, какие-нибудь потенциометры, например, быстро сотрутся, да и сам коллекторный двигатель очень уж не вечный, вот бы безколлекторный взамен или шаговый!
Linux Firefox
 Boulder
3
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Если взять шаговый или, тем более, бесколлекторныё с выходом оборотов, то никакого секаса с «вычислительным анализом сигналов» не будет. А так романтека — пока отладишь алгорифм, в моторе щётки сотрутся, и надо будет другой замок покупать.
Windows Safari Chrome
 Москва
0
0
Max
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Как я понимаю учет мощности идет самой esp8266?
Это может привести к еще одному багу:
чип хоть и мощный, но вынужден заниматься WiFi, а значит активность в сети WiFi (пара запросов с сервера или помеха по каналу-потеря соединения с роутером - реконект) может вызвать заминки в замерах и тупо пропуски в данных.
И наоборот слишком долгий основной цикл без пауз может нарушить работу WiFi. Или долгий обработчик прерываний...
Вообще пауза может оказаться длинней если системе нужно еще подумать... (это о дрифте частоты замеров)
И еще одна фишка которая меня в последнее время расстраивает в этом чипе - нет нормального доступа к железным прерываниям и счетчикам :( Тупо счетчик воды требует отдельного обработчика, который будет вызываться через "системный" обработчик. В тойже ардуине можно считать импульсы железным счетчиком и не парить проц.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Нет, это чисто мотор замка.
Windows Safari Chrome
 Москва
1
0
Max
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я имел в виду, что сама ESP через функцию AnalogRead читает потребляемую мощность мотора и потом ее анализирует. При этом используется софтовый таймер-прерывание.
Так вот, этот таймер имеет дрифт зависящий от внешних факторов (хотя если мотор открывает замок в течении нескольких секунд, то дрифт не столь значителен). А при скоростных процессах можно просто пропустить событие (всплеск).
И второй момент, если обработчик "задумается" при анализе, то это может вызвать сбои в работе WiFi.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Почему вы думаете, что прерывание таймера необязательно и отодвигаемо? Это же прерывание, не жук накакал. Другой вопрос, что сейчас оно у меня вообще очень редкое - около 200 мс наверно. Ничего не мешает мне увеличить частоту измерений раза в три, тогда наверно точность вообще станет отличной.

Сейчас таймер запускается так: blinker.attach(0.05,timerIsr); Вот не помню, что такое .05
Windows Safari Chrome
 Волжский
0
0
дануопятьрегистрацияотпаласамвиноваткукипотер
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> сейчас оно у меня вообще очень редкое - около 200 мс наверно.
> Ничего не мешает мне увеличить частоту измерений раза в три,
> тогда наверно точность вообще станет отличной.

> Сейчас таймер запускается так: blinker.attach(0.05,timerIsr); > Вот не помню, что такое .05

Число прерываний в миллисекунду?
Linux Safari Chrome
 Тольятти
0
0
binarydata
> не помню, что такое

Вот именно для этого и придумали константы
Windows Safari Chrome
 Челябинск
0
0
vinny-the-poo
Вчера (упс, уже позавчера) пришлось срочно впендюривать в схему управления реле времени, чтобы обеспечить достаточную длительность для сигнала переинициализации контроллера. Полчаса исходил на удобрение, безуспешно пытаясь задать нужный интервал, после чего пришлось развернуть инструкцию на реле.

Оказалось, что переключатель 1s, 10s, 100s... который я принимал за множитель, означает диапазон. Трудно выставить уставку в 3 секунды на диапазоне 1s.
Windows Safari Chrome
 Москва
0
0
Max
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Это не прерывание по таймеру. Это софтовая опция (планировщик задач в винде) с низким приоритетом. Функция реализована программно т.к. основная задача чипа это WiFi, а на всех "пользователей" встроенных таймеров не хватит, по слухам их только 3 шт.

200мс довольно большое время и разница между 200мс и 250мс вам не критична. Но ради эксперимента я бы попробовал в момент работы моторчика отправить пачку web запросов на модуль, или отключил роутер. Мне даже уже стало интересно какова будет реакция модуля на такие издевательства.

P.S. а как производитель планировал учет положения "ключа". Как я понял по картинке, моторчик крутит ручку открывания замка изнутри квартиры. У ручки есть "правильное положение покоя". Если уж есть моторчик, то неужели к нему так сложно добавить "счетчик оборотов" или датчик положения. Ведь ясно что без него эта поделка не пригодна...
Windows Safari Chrome
 Москва
0
0
Max
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Посмотрел фотки личинки на Али.
Это что же получается, если открывать замок вручную изнутри, то при этом приходиться крутить весь редуктор и моторчик?
А если хваленая металлическая шестеренка китайского производства потеряет зуб, и словит этим зубом клина? Или электроника ступит и поплавит перегрузкой моторчик... Личинку заклинит и выход закрыт?
А ключом тоже редуктор крутить надо?
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Вкратце - да.

А в реальности - у меня за 10 лет не было ситуации, чтоб замок приходилось открывать ключом. А в процессе настройки конкретно этого замка я его крутил ключом много, ничего не сгорело. Не думаю, что в следующие 10 лет будет проблемы. Скорее сами шестернки изотрутся, чем что-то сломает ключ, которым незачем пользоваться в мирное время.
Windows Safari Chrome
 Москва
0
0
Max
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Согласен, просто в таком случае не стоит рассматривать вариант открывания ключом как запасной.
В случае клина моторчика, открыть ключом через редуктор боюсь не получиться.

Чем больше думаю, тем больше убеждаюсь, что моторчику необходим счетчик оборотов, ну скажем как на кулере. Хотя конечно лучше с двумя датчиками для контроля направления вращения. Думаю что через такой редуктор за один оборот "ключа" моторчик делает порядка 100 оборотов, а значит датчика 1 импульс на 1 оборот вполне достаточно.
И никаких лишних заморочек.
К примеру вот https://www.aliexpress.com/item/Official-iSmaring-GM25-370-D[...]
Форм фактор не тот, но это как пример.
Windows Safari Chrome
 Москва
0
0
Max
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Или еще проще, из того что есть :)
В средней шестеренке редуктора сверлим отверстие.
В крышке 2 отверстия под 2 оптических датчика. Под шестеренку лампочку. Вот и все, счетчик оборотов готов. получается около 20 имп на один оборот.

Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Можно еще лазером считать количество зубцов у шестеренки. Но цель-то конечная какова? Считать обороты чтобы - что? Я даже не о том, что замки могут оказаться разные, и из запирает разное число оборотов, и даже не о том, что счетчик может сбиться и замок начнет ездить от упора до незапора. Вопрос вообще - конечная цель какова?
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Не вижу логики в рассуждения вида "аварийный ключ нельзя использовать потому что он наверно сломается".

Что касается всевозможных энкодеров и счетчиков - я не вижу им практического применения, у меня все прекрасно работает без них. Вам просто нравится сама идея счетчика оборотов? Сделайте себе замок со счетчиком и поделитесь с нами результатами.
Windows Safari Chrome
 Москва
0
0
Max
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Никоим образом не хотел Вас задеть. Лишь хотел предложить наиболее простое и стабильное решение.

Аварийный ключ не работает в случае аварии с мотором (если его хоть чуть-чуть подклинит, провернуть его ключом через редуктор будет проблематично).
Тогда на какой "аварийный случай" нужен ключ? Таких случаев почти не остается (надеюсь на успешные 10 лет испытаний вашей системы)

Как вы писали ранее Вы хотели определять моменты, когда замок закрыт на "один оборот" и когда он закрыт на "два оборота".
При жесткой связи личинки с редуктором это можно сделать энкодерами.
Заодно будете всегда знать если кто-то открывает дверь ключом.

Ситуация со сбивкой счета "от упора до незапора" решается элементарно - перед закрытием из положения "открыт" делаем проход до упора в сторону открытия.

Учет по потребляемой мощности имеет ряд тонкостей. Сейчас подумал еще об одной, зависит от конструкции замка: на закрытой двери опустить ручку вниз и надавить плечом на дверь (как эксперимент). В обычном замке засов ручки уберется, и дверь "упрется" засовом замка, в этом случае усилие на открытие становиться заметно выше (если открывать ключом). Возможно я не имел дело с современными замками и там все давно продумано.

Еще раз прошу прощения если докучаю своими размышлениями. Делаю это исключительно из добрых побуждений.
Windows Firefox
 Франция
1
0
Пыль
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Ллео здравствуйте,
Хочу вас отговорить от установки этой херомантии в дверь и тем более подсчёта всяких импульсов-шмигинсов. В теории это всё красиво, но однажды вы столкнётесь с тем, что в ригеля попала пыль, ток на двигателе возрос, ардуино подумало что дверь открыта и остановило замок. И вы, как однажды я, проведёте 2 часа снаружи, в ожидание МЧС с болгаркой. По моему опыту самый православный замок это накладной, с самым простым радиореле и бесперебойником на 7А/ч.
Замок сам защёлкивается на выход.
На вход нажимаете кнопку на пульте.
Замок
Блок питания 12 Вольт
Аккумулятор 7А/ч
Радио реле
Linux Safari Chrome
 Москва
2
0
Леонит Каганофф
Что значит "Ардуино подумало что дверь открыта"? Откройте ее снова, пока не откроется. Не надо программировать Ардуино на идиотские блокировки.

По поводу замка, который вы советуете - вот как раз его я и собираюсь менять. У него есть минусы - он грохочет и несовместим с доводчиком. Поэтому с ним не сделать дверь, которая плавненько запирается сама. Для гаража замок хорош, для квартиры - уродлив и давно надоел.
Windows Firefox
 Щелково
0
0
abrrvalk
Есть классный электрозамок который ставится не в дверь а вообще в ответную часть. Имеет нулевое усилие как при закрывании так и при открывании. В основе поворотная деталь за которую цепляется язычок замка.

Гуглится тяжело но реально. Стоит дорого.

UPD:
всё проще
http://www.alarmico.ru/catalog/elektricheskie_zashchelki/
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Отжимается фомкой или даже отверткой. В случае поломки или отключения электричества не имеет возможности открывания ключом. Вы серьезно думаете, что я не в курсе всех доступных на сегодня моделей замков, и выбрал новый электрозамок вместо старого электрозамка наобум? :)
Windows Firefox
 Москва
0
0
abrrvalk
Хорошо, раз в курсе...

PS
Фомкой отжимается подавляющее большинство входных дверей. Не зависимо от замка (особенно если ригели на 1 сторону).

В качестве быстрой закрывалочки у меня стоял автомобильный актуатор на задвижку. Простая и надежная конструкция. Для надежности можно поставить два актуатора с независимым управлением.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Честно сказать, меня другие вопросы волнуют. Сможет ли ESP8266, выбранная мною как новая платформа для экспериментов, работать без зависаний 24/7 как работала старая Ардуина на avr16? Можно ли научить ее отправлять push-сообщения в приложения без внешнего сервера? Тащить ли внутрь веб-мордочки мой фреймфорк от движка main.js с вот этими всеми выдвижными окнами и прочей балалайкой или сделать спартанский аякс и этим ограничиться? Если подпаять к ESP копеечный аудиочип, удастся ли научить воспроизводить mp3 или wav? А замок-то давно работает, чего о нем думать.
Linux Ubuntu Safari Chrome
 New York
0
0
Кто здесь?
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
радиокнопка, открывающая замок в квартиру?
Ну-ну. Предлагаю эксперимент:

Ардуина есть? Вот там на фото начинки платка вертикальная - видите ее? Это ресивер, на 433 или 315 Мгц.
Стандартный, продается на Али за 30 руб. в комплекте с передатчиком (либо выковыривается из беспроводного звонка)

Его можно подключить к ардуине и считывать принимаемые коды. Там просто - 1/0 - двоичный код.

Нажимаете кнопочку - принимаете код открытия замка. Кодировка Princeton - 99% она. Четыре посылки статического кода.
А если подключите плату передачика - то сможете и передать его.

И чо дальше? А дальше - ищете того, у кого стоит такой замок. Ну, навскидку это конечно не так просто, но вот если заранее знаете, у кого такое есть - нужно будет подождать, когда гражданин нажмет на кнопочку и сохранить код про запас.
Все, ключ у вас в кармане. Ну или не у вас, а у кого-то другого, у кого тоже была ардуина и немножко свободного времени.

Но есть и хороший момент: практически то же самое относится к прочим "радиобрелкам" подобного типа - управление шлагбаумами, например, воротами, те же беспроводные звонки.
Мало ли, пригодится?
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Истинную истину глаголите! Шлагбаумы даже с циклическими кодами тоже ломаются элементарно. Только https или собственная wifi замка спасет )
Windows Safari Chrome
 Москва
0
0
NikVic (варящий яйца в микроволновке)
Извините, пожалуйста, мою тупизну.

Если мотор замка работает с известной скоростью, то зачем все эти ухищрения с замерами тока и определениями положения? Почему нельзя тупо включать его на (условно) калиброванные 1,75 секунды для закрытия на один оборот и 3,5 секунды для двух оборотов?

UPD: Извините, прочёл ответ в предыдущей записи: "не нравятся константы". ОК.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Совершенно не факт, что скорость постоянная. Завтра изменится напряжение на блоке питания или усилие замка, и скорость поплывет.
Windows Safari Chrome
 Воскресенск
0
0
NikVic (варящий яйца в микроволновке)
В первом приближении для того, чтобы скорость двойного оборота достигла скорости одинарного, напряжение должно вырасти в два раза. А это уже фатальное пыщь-пыщь для других компонентов.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Скорости незачем расти именно в два раза. Достаточно немного не доехать до точки открывания. Но к чему эти споры, когда все пока работает, а на крайняк у меня есть датчик зеленой линии, который работает уж точно на 100%?
Linux Safari
 Москва
1
0
Timson
Согласно тз про 2 квартиры на площадке есть иное решение: врезать электроз амок ALDB-100 в косяк, а в двери высверлить углубление под шток. Считыватель у вас уже есть, чипы вшиты.Есть напряжение - замок закрыт, нет - шток уходит из двери в косяк.
Тут все что вы хотели: закрыть и открыть быстро, ограничение хода штока, подключение к существующей скуд - 20 минут, ключ вообще не нужен.

Технология прохода (для примера): пока все дома - все замки открыты, кроме этого замка. Для прохода прислонить руку к считывателю и замок менее чем за секунду открыт. Когда все уходят - закрываете свои замки как обычно, а бонусом - еще 1 ригель в двери
Windows Safari Chrome
 Домодедово
1
0
id
Вешаем в квартирных коридорах датчики движения. Пока с них есть сигналы - "электромоторный" замок открыт, работает только электромагнитный (ALDB-100? да, что-то такое я и имел в виду). Сигналы со всех датчиков движения пропали на какой-то срок (полчаса?) и при этом дверь закрыта? Запираем еще и "электромоторный" замок. При отпирании - отпираются разом все.
В случае, если в квартирах действительно постоянно активная суета - это позволит сократить количество циклов мотора с 100500 до 1-2 в сутки.

О, заодно идея пришла, как обойти уязвимость "пропадание питания" в электромагнитном замке. Да, конечно - питать от ББП, но: зачем без толку высаживать батарею, грея электромагнит? Напряжение пропало - секунд через 30 запираем моторный замок и отпускаем электромагнит. Напряжение вернулось, а в квартирах - суета (датчики движения докладывают)? Минут через пять включаем электромагнит и отпираем мотор.
Linux Safari
 Москва
0
0
Timson
Не все так просто. На практике есть проблема у датчика движения и контроллера: человек суетится на выходе, одевая тапочки или "туфли с открытым мыском" (с), из-за чего срабатывает датчик. Начал тикать отсчет в контроллере 3-9 секунд на тот случай, когда замок открыт, но дверь еще не открыли. И как только заканчивается отсчет - замок закрывается и человек пытается открыть закрытую дверь, при этом движения человека интуитивно расчитаны, что дверь открыть можно. В результате: сломанные ногти на руках, удар головой в закрытую дверь, проклятия в адрес кривой техники. Настроить период никогда не получится правильно, ибо кто-то быстро выходит, кто-то медленно. Датчик тоже срабатывает через 1-2 секунды, а значит, обнаружив, что казалось бы, открытая дверь все же закрыта, человек вынужден будет махать руками и ждать новой сработки датчика минимум секунду.
Поэтому вместо датчика движения нужно ставить либо радар (например,на втоматической двери торгового центра стоят радары - пока вы в зоне его децствия дверь не закроется), либо несколько (чем больше, тем точнее будет работать) оптических пар (от одной стены световой луч доотражателя на другой. Типа, как на решетке вентиляции в центре Ленгли в "миссия невыполнима". Только луч не видно). При пересечении луча сработает открывание двери, но команда на закрывание не пройдет, пока человек не выйдет из квартиры.
Второй вариант опасен тем, что проходя мимо входной двери случайно можно ее открыть и она так и будет открытой стоять - воры и прочие неприятности... Потому радар предпочтительнее

по поводу греть электромагнит: можно другой эл замок - закрыто по умолчанию. Для открывания нужно питание подать на замок и ригель откроется. А теперь представьте, что вы уехали в турцию на 10 дней, а в 1й день отключили электричество. Как вы потом попадете внутрь, не сломав дверь?

Да, по поводу закрыть на ночь основной замок - добавить реле времени. Так в магазинах по 500 руб продается красивый таймер с контактиками. На 16 программ и ручное управление расчитан.

Если продолжить по тз смотреть, то можно по сработке радара в вечернее время даже открывать вторую квартирную дверь, но имхо, опасно это
Windows Safari Chrome
 Домодедово
0
0
id
Кстати да!

Обычная ручка открывания замка, которая обычным механическим образом его открывает. Открывает - если она механически соединена с замком.

А вот будет ли она с ним соединена - определяется состоянием электромагнита, который включается по сигналу от считывателя импланта, который расположен в этой самой ручке или рядом с ней :)
Windows Firefox
 Нидерланды
1
0
Пыль 9
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Я вам очень сильно хочу ответить в 5 раз, сайт посылает.
Лет ми шою фром май харт, как говорится.
Вас просто не обносили домушники. У меня в гараже увели зимнюю резину, цена вопроса 12 тыр за все колёса. И тут подумалось если у меня давление подскочило из-за этой неприятности, то что же будет если обнесут квартиру. И я поставил замок у которого нет личинки, открывается с китайского пульта, код не подобрать (китайский же). Проводил тест-драйв - реально ломал фомкой, - не сломал, притом что замок на 4х болтах в 3 миллиметровой стали. Казалось бы ерунда. Не вышло.
Windows Firefox
 Франция
1
0
Пыль 9
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Иш ты хитрый какой. Пультов то 3 штуки, один сломаю, другой потеряю, а третий то останется. А на случай потери всех, сделал штробинку в стене и замуровал. когда всё сдохнет, размурую и батарейку Крону подключу. Шах и мат. И ни одна криминальная сволочь не догодается.
Windows Firefox
 Румыния
0
0
Пыль53
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
тебе что нибудь говорит слово 4783? tsc912?
Windows Firefox
 Франция
0
0
Пыль53
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
когда Каганов песал что Лемехов и Хусаиныч настроили ему васм. я подумал что ты один из них.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
А ты кто такой, что знаешь Лемехова и Хусаиныча?!
Windows Safari Chrome
 Домодедово
0
0
id
Стоп, погодите... "Все не так!" (с)

Два замка: ригельный с электромотором и редуктором и электромагнитная щеколда (вот хоть так же ALDB-100).
В закрытом состоянии двери она всегда заперта как минимум на один из этих замков, и отпирается штатным образом: картой, имплантом или чем еще там.

А датчики движения нужны, чтобы решить - на какой замок запирать дверь. Если в квартирах - суета, то запираем только на электромагнитный замок: он быстро открывается и закрывается и у него большой ресурс. Но - механически он менее стоек к вражескому лому, чем замок с электромотором (банально из-за размера и количества ригелей). Поэтому, если в квартирах вдруг прекратилась суета (все спят, или все уехали на неделю на море) - контроллер автоматически запирает дверь еще и на замок с электромотором. И отпирает замок с электромотором при первом же "штатном" отпирании двери или при возобновлении активной суеты в квартирах (утром все проснулись, и скоро рванут на работу).

То есть: не отпирать дверь по датчикам движения в квартирах, а лишь решать - на какой из замков ее запирать.

> по поводу греть электромагнит: можно другой эл замок - закрыто по умолчанию. Для открывания нужно питание подать на замок и ригель откроется. А теперь представьте, что вы уехали в турцию на 10 дней, а в 1й день отключили электричество. Как вы потом попадете внутрь, не сломав дверь?

Я ведь как раз и описал решение этой проблемы? Два замка: нормально-открытый электромагнитный и электромоторный. При отключении электричества выжидаем небольшую паузу (вдруг отключили временно? просто выбило автомат, и сейчас его кто-то включит обратно?), а затем запираем электромоторный замок - и отпираем электромагнитный. Все, система теперь расходует батарею только на питание контроллера. Если она высадится в ноль - дверь все равно можно будет открыть: ключом. Потому что, когда все-все ушли гулять на улицу, хоть кто-то один догадался взять с собой этот самый механический ключ от электромоторного замка. А в идеале - не кто-то один, а два-три человека, по числу ключей. Теперь нам остается лишь дождаться под дверью возвращения кого-то из них - и вуаля, они откроют нам дверь. Безо всякого электричества.
Windows Safari Chrome
 Казань
0
0
Timson
Ээээ... Простите, резюмирую свой предыдущий пост: использование датчиков движения в автоматизации открывания дверей - устарело по 2-м причинам:
1. потому что очень велико суммарное время от обнаружения датчиком непосредственно движения до непосредственно передачи команды на исполнительный механизм эл замка - от 1,5 секунд.
2. до момента возвращения контроллера в состояние, когда он снова будет способен воспринимать сигналы, не менее 5 секунд.

На заре появления такой схемы работы такие задержки по 3-9 секунд были нормальными, ибо не было альтернативы. Сейчас есть альтернатива - радары, оптические пары. Скорость срабатывания - от 0,5 секунд.

А по поводу энергосбережения и схем включения, то мое мнение - все эти приборы = элементы конструктора. А какую схему из десятков варинтов применить из этих элементов на основании технического задания (хотелок заказчика) - дело фантазии проектировщика. Эксплуатация собранной схемы показывает, что пока исправны элементы все схемы работают и неплохо. Но в случае выхода из строя элемента/элементов возникают проблемы по доступу к ним для замены. Любая неисправность всегда не вовремя. Вот вы пишите, например, "Теперь нам остается лишь дождаться под дверью возвращения кого-то из них - и вуаля, они откроют нам дверь. Безо всякого электричества." (С) В 10 случаях именно так и произойдет. Но в 11-м случае человек будет лететь быстрее ветра, чтобы успеть, например, на горшок. И вот "дождаться" - не вариант! И именно на такой случай необходимо рассчитывать, а не на первые 10.
Mac Safari
 Москва
0
0
id
Э... Хотел сначала ответить иначе, но решил сдержаться.

Резюмирую все свои посты по подтеме: я НИГДЕ не предлагал использовать датчики движения для управления замком. Для той задачи, для которой я предлагаю их использовать, задержки в секунды или даже в минуты не имеют никакого значения.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Во-первых, у меня нет дверного косяка, там стальная рама. Во-вторых, а если завтра такой замок захочет поставить друг/брат/сосед/заказчик оптовой партии - им всем тоже сверлить прикажете?
Linux Safari
 Нижний Новгород
0
0
Timson
1. Я привел пример эл магнитного замка для деревянных косяков. Но есть вариант и для металлисеского каркаса. Есть для полностью стеклянной двери. Формфакторов много, а суть та же, что я написал выше.

3. И оптовым заказчикам ставим такие замки. Особенно эффективно они работают в связке с радаром (см. выше). А еще вместе с этим комплектом пользуется спросом управление дистанционное - брелок или смартфон.

4. Напишите мне в личку ТЗ полное - отвлекитесь от знания скуд, а сделайте упор на технологии производства: что и когда должно закрываться/открываться, как планируете ходить, сколько народу..... Вот все хотелки пишите, а, я вам напишу оборудование.

2. Хм. Фигануть сверлом 12 мм дырку в металле такая проблема?
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Спасибо, но вы как-то игнорируете тот факт, что оборудование у меня уже есть и его программирование увенчалось успехом (с вашей, читателей, помощью, за что еще раз большое спасибо).
Linux Safari Chrome
 Москва
1
0
Леонит Каганофф
Задача простая - вот это говно, верой и правдой проработавшее 10 лет, убрать:





Взамен поставить тактично закрывающийся доводчик с тихим замком.

Нужно:

- Замок должен быть надежным, дверным, не для ящика стола.

- Необходима возможность открыть ключом в случае аварии или пропадания электричества.

- Дверь должна запираться без лязга сама, спустя 15 секунд после того, как доводчик ее плавно прикроет (если ее в первые 15 секунд не распахнули заново).

- Дверь должна отпираться по управляющему сигналу. Если ее не открыли за 10 секунд - запереться обратно.

- Бюджет электронно-управляемого замка вместе с доводчиком и электронными компонентами 3000 руб. Нет, не 10000, не 20000, а именно 3000. Моя схема укладывается с запасом: замок 500руб + электрическая личинка 1100 руб + легкий доводчик 900 руб + ESP8266 200 руб + L293D и всякие резисторы и датчик холла 200 руб и еще 100 руб осталось, купим за 98 руб сканер RC522 и наладим сканирование чипов, меток и карточек от метро в качестве ключей для замка. Админка внутри на вебе по WiFi.

Вы можете предложить для этой задачи аналогичное решение такой же себестоимости? Если да - предложите. Если нет - я вам готов предложить через два месяца после полной обкатки, вы сможете их продавать своим клиентам.
Mac Safari
 Израиль
0
0
braintunic
Подозреваю, что с таким скудным бюджетом ни один бизнес не возьмётся за решение задачи.

Ведь кроме цены компонентов и материалов бизнес должен ещё заплатить исполнителю плюс налоги - а это уже пойдёт в чистый убыток, потому что удешевить компоненты и материалы здесь практически невозможно.
Windows Firefox
 Санкт-Петербург
0
0
Tarn
Чую, где-то тут откат ещё должен быть с поставщиком, хотя бы при покупке замка, а лучше, личинки. Без этого IT-бывзныс не прокатит.
Mac Safari
 Израиль
1
0
braintunic
Да какой тут откат...

Вон Тимур так обиделся на ЛЛео за эту мизерную сумму, что даже не стал отвечать, хотя сам просил предоставить ТЗ ;)
Windows Safari Chrome
 Казань
1
0
Timson
Блин, погодите парни делать выводы! Я в дороге, все в конторе отдыхают - сегодня ж день радио и связи! В святой наш праздник никому не могу поручить расчет. Сам напишу. Я на М7. Ночью буду в Москве, накидаю схему и прайс приложу.
Откаты? Нет, не слышал. А что это?
Брайн правильно сказал - в продажу нужно добавить работу, норму прибыли, налоги... Он внимательно игнорировал слова Ллео о себестоимости оборудования. А так то в 3 рубля вполне можно влезть
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Еще сборку, корпус и блок питания на 12 вольт ;) Корпус сложно - пресс-форма стоит солидных денег, а мелкие партии на 3D-принтере затратны, даже на оптическом из светоотвердевающей смолы. А вот доводчик можно выкинуть - это мой частный случай, не каждому он нужен. :)
Windows Safari Chrome
 Казань
1
0
Timson
Отправил на почту.
Новое оборудование - 3680

Дороже 3000, ибо модернизацией не занимаемся))) "Бизнесмен бы выкатил набор своих хотелок по замку" (С) Это и есть наша хотелка. Понятно, работы не входят в стоимость и мелкие расходники.

"прикинул, что может сам брендировать и продавать под собственным брендом по 12000 руб" (С)
Такой мелочовкой не интересуемся. Ибо ставить комплекты будут монтажники косорукие... Нафига нам эти проблемы?
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
Боюсь, не бизнесмен Тимур ;) Бизнесмен бы выкатил набор своих хотелок по замку, потребовал бы обеспечить 100% надежность, прикинул, что может сам брендировать и продавать под собственным брендом по 12000 руб ;)
Linux Safari
 Москва
2
0
Timson
"Из букв Ж О П А слово "вечность" не сложить" (с)

За словом "брендирование" скрываются месяцы работы и титанический труд по организации производства, сети сбыта и обслуживания, проектных расходов... Строить бизнес на компоте из чьих то решений - гиблое дело в нашей стране.
Есть более эффективные методы заработка. При курсе валюты в рф необходимо работать в 60 раз больше, чем в европе. У нас своя ниша есть в работе по общестрою, слоботочке, электрике. Потому мы переключились на болгарию, турцию, москву)
Windows Safari Chrome
 Санкт-Петербург
0
0
Tarn
"Потому мы переключились на болгарию, турцию, москву"

Почему меня зарубает с этих слов? Посидел, выпил водки, прочёл снова. Всё-равно зарубает.
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
Тимур, понимаю вашу позицию, но поймите и вы, что мне эти опасения совершенно пофиг: я-то совершенно ничего не теряю, отлаживая в свое удовольствие прототип для собственной двери, планируя затем предлагать уже готовое решение потребителям/производителям. Система, которую предлагаю я, как мы выяснили, по компонентам в полтора раза дешевле, а по возможностям несравненно шире. Вот поэтому я ее и делаю ;) Будет готово - будет предмет для разговора (вам это не интересно, значит, не с вами). Та система, что у меня сейчас, архитектурно заточена только под мой дом и не пригодна к предложению. В новой системе я этот недостаток хочу устранить и сделать дешевое универсальное решение из общедоступных компонентов, которое можно применить почти на любой двери без её, двери, переделок.
Linux Safari Chrome
 Тольятти
3
0
binarydata


Linux Safari Chrome
 Тольятти
0
0
binarydata
Эпик фейл, "World" конечно же
Mac Safari
 Москва
0
0
id
Да не, так даже лучше. Загадочнее.
Пусть читатель сам думает: то ли речь о текстовом редакторе, то ли - о том Слове, что было в начале...
Windows Firefox
 Санкт-Петербург
0
0
Tarn
Я вот сразу про MS Word догадался. Даёшь Modelling Real WordStar и WordPerfect, Блеааать!!!
[Упр] [K] [L], [Упр] [K] [F] !!!
Текстовые ПРОЦЕССОРЫ, между прочим, не хрен какой.
Windows Safari Chrome
 Челябинск
0
0
vinny-the-poo
Интересная особенность инерции мЫшленья. Я сразу прочитал как "world", даже не заметил опечатки, пока вы не указали.
Windows Safari Chrome
 Челябинск
0
0
vinny-the-poo
У вас отсутствует инерция мЫшленья. Это ценный дар, берегите его.
Windows Firefox
 Санкт-Петербург
0
0
Tarn
А я заметил, заметил, и сразу запарился, начал искать тайный смысл, не нашёл и впал в панику - неужели я настолько стар и глуп, что не вижу всем очевидного? Мне уже пора? Последний раз позвонить Мэри N, весомо, но благородно проклясть её и купить на Юноне (питерская толкучка) Ремингтон с одним патроном? Оказывается, на этот раз всё-таки обошлось.
Windows Safari Chrome
 Челябинск
1
0
vinny-the-poo
Вот видите, как непрактично излишне параноить? Оказывается, и один может шагать в ногу и "очевидное" может быть ошибочным.

В "Марсианских хрониках" Брэдбери есть одна изумительная часть (собственно, они там все изумительны по-своему). У марсиан была одна особенность — когда их мозг генерил глюки, как следствие психического заболевания, эти глюки становились видны и окружающим на манер голограмм каких-нибудь.

Когда на Марс прибыла земная экспедиция, они ходили и приставали ко всем: "Смотрите, мы инопланетяне с Земли, давайте скорей делать контакт!" Естественно, их все принимали за психов (а вы бы не приняли, встретив такое на своей родной Фонтанке?). В силу вышеназванных причин демонстрация самого корабля не помогала.

В конце концов ими занялся психиатр. Ему показали корабль и дохтур, оценив непревзойдённую реалистичность галлюцинации, объявил, что их заболевание неизлечимо и лучшим выходом будет живительная эвтаназия. Что тут же и осуществил, завалив всех космонавтов из револьверта в полной уверенности, что глюк тут же рассеется.

Но корабль не рассеялся. Мозгоправ решил, что он сам заболел индуцированным психозом, и, верный себе, тут же произвёл самоликвидацию (прямо, как вы собирались, не правда ли?) А ведь это была самая объективная реальность, так-та!

Верьте в себя.
Windows Safari Chrome
 Санкт-Петербург
1
0
Tarn
Это точно, верь глазам и жопе своей.
Была древняя поганейшая реклама какой-то Фанты-Спрайта, где бодрый говнюк орал: "Верь жажде своей!" А моей знакомой всё время слышалось: "Верь жопе своей!"

А гуманист Брэдбери всегда меня поражал своей кровавостью. "Марсианские хроники" по числу трупов всего Тарантино с Родригесом легко переплёвывают.
Windows Safari Chrome
 Рязань
0
0
Кухаренко
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Немножко оффтопик.
В Чертаново уже который день ровно 3.7 градуса. Там правда так плохо или вы просто градусник в холодильник положили?
С другой стороны, не такой уж оффтопик. Датчики, графики...
Windows Firefox
 Нидерланды
0
0
Пыль8
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Вижу твой камент. Но не вижу на странице. Бага/фича - пофигу. Джонсону передам. Вся тусовка в насере, мы блин, ренегаты, с какими-то геями работаем. Давай как-нибудь пива вмажем?
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Да у меня батарейка сдохла в датчике.
Mac Safari
 Москва
2
0
id
Учитывая, что батарейка померла аж в прошлом сентябре, и унылое зрелище мумифицированной погоды на каждой из страниц дневника нисколько его не колышит...
... Кхм... Предположу, что мы зря тут напрягаемся. "Ресурс", понимаешь, "надежность"... Ну заклинит у него замок - так просто будет полгода лазить в окно, пока не представится случай его починить, вот и всего делов.
Windows Safari Chrome
 Челябинск
0
0
vinny-the-poo
Что за дискриминацияя такая? А я? Я, допустим, никуда не поуезжал. Но от моей малой родины, лежащей за Хребтом, на подступах к Сибири, расстояние до Москвы будет раз в несколько дальше этих ваших Израилев, например. Я тоже хочу в белых штанах знать погоду в Чертаново.
Linux Firefox
 Boulder
0
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> никакой возможности узнать сколько там градусов выше или ниже ноля в далёком Чертаново

До фига возможностей:



(с прогнозом и историей для каждой станциии, и не только температуры).
Linux Firefox
 Boulder
0
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Подобный сервис показывает не среднее по больнице, а именно что температуру за чьим-то окном (кто поставил себе личную метеостанцию и настроил её отсылать данные в подобную погодную сеть). Кагбе из картинки прекрасно видно, что можно выбрать конкретную станцию, а также что некоторые станции то ли стоят на солнышке, то ли показывают температуру не за окном, а перед (или между)...
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
И ключ. Сломается железный ключ на связке у родителей.
Windows Safari Chrome
 Санкт-Петербург
0
0
Tarn
Ну, а если метеорит упадет с неба.
Или, например, марсиане на танке
ворвутся в его прекрасный город
и из бластеров стрельбу откроют.

Детей, стариков и женшин.
и в местную администрацию.
осквернят центральную плошадь
и телевизионную вышку.

(c) Вася Ложкин
Windows Firefox
 Швеция
0
0
Dust
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
У меня был как раз этот случай. МЧС с болгаркой, это крайний случай, когда я не продублировал и электрику и механическое открытие. Рассказать как нынче сделал механическое открытие без личинки для ключа не могу прилюдно. Замок похожий на новый замок Ллео, у меня был, попроще, с ригелями и без моторчика. На сегодя моё ИМХО накладной таки лучше чем врезной, главное раз в год набить солидолом, и аккум поменять. Да, замок шумный. Доводчика у меня нет.
Linux Ubuntu Firefox
 Москва
1
0
Леонит Каганофф
> Рассказать как нынче сделал механическое открытие без личинки для ключа не могу прилюдно.
> Да, замок шумный.

Дырочку просверлил и тонкой спицей отщелкиваешь эту извечную поеботу дурацкой конструкции CISA? :)

Замок должен иметь механический ключ на аварийный случай. Точка. Мало ли что там заест или сгорит моторчик/сонленоид?
Windows Firefox
 Швеция
0
0
Dust
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Блин, вы меня вывели на чистую воду :)
Да это правда дырочка. Но злоумышленнику придётся сорвать дермантин с двери, отколупать приклеенную пластину, и только потом он получит доступ к иголке кощеевой.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
У всех владельцев этого замка всё одинаково устроено :) Кроме того, в конструкции этого типа замка меня смущает возможность отщелкивания от мощного удара кувалдой по двери. Не проверял, но чую! Поэтому я вам тоже советую переходить на электричекую личинку. Я как ее нашел на Алиэкспрессе - так и понял: оно!
Windows Firefox
 Израиль
3
0
Павел бывший Пашка
Да что вы все о кнопке: поставьте маленький китайский магнитик и самый маленький китайский геркончик. Это порядка на четыре надежней китайской же кнопки. А на малых токах и на пять.
Оптопару не советую - паутина там, дохлый тараканчик, просто пыль... Диод Холла можно б, но это лишний изъеб. Геркон прослужит дольше замка и дольше дома.
Windows Safari Chrome
 Челябинск
0
0
vinny-the-poo
Вы ничего не понимаете своим приземлённым рациональным умом. Настоящему энтузиасту надо не понадёжнее, а похитровыебаннее, да с приподвывертом желательно.
Windows Safari Chrome
 Москва
1
0
Sav
FLT_push - это адъ. Нельзя делать FLT_D[FLT_lag]=x; если буфер объявлен как int FLT_D[FLT_lag], это уже за границами массива, да и за границами всех этих meanов и stddов. Я бы сделал буфер кольцевым, чтобы каждый раз его не перемещать. На худой конец, перемещать можно memcpy.
Linux Ubuntu Firefox
 Москва
0
0
Леонит Каганофф
Я тоже так сказал Чуку. У меня-то в модельке на PHP изначально были push/pop на тамошнем местном языке работы с массивами - от того и название функции.

Но он возразил, что в нашем случае речь идет о массивах в 5-20 значений, поэтому быстрее и надежнее будет его перемещать, чем городить кольцевой буффер. Тут я не нашелся, что возразить.
Linux Firefox
 Москва
0
0
Чук
Кстати, кольцевой буфер очень даже можно. Даже без всяких push/pop. Для вычисления среднего и СКО порядок значений не важен, а реализовать запись текущего значения "по кругу" можно просто и незатратно.
Linux Firefox
 Boulder
0
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Сигналоанализаторы хреновы...

Среднее и дисперсия вычисляются примерно так (считаем, что тип данных достаточно большой — 32-bit int или float — чтобы переполнения не было):

sum -= buf[index];
sum2 -= sq(buf[index]);
buf[index] = sample;
sum += sample;
sum2 += sq(sample);
index = (index + 1) % buflen; // можно через if, если быстрее (или &, если buflen = 2^n)

после этого будут обновлённые значения:

среднее = sum / buflen
дисперсия = (buflen × sum2 − sq(sum)) / (buflen − 1)

Естественно, тут надо не делить и извлекать корень (для стандартного отклонения), а противоположные части неравенств соответственно умножать или возводить в квадрат:

if (sq(sample * buflen - sum) > thr * (buflen * sum2 - sq(sum))) { ... }

где thr = порог² × buflen / (buflen − 1), порог — в единицах стандартного отклонения.
Linux Safari Chrome
 Москва
0
0
Леонит Каганофф
Михаил, это хорошо и наверно имеет смысл реализовать перфекционизма и красоты ради, но, положа руку на сердце, чем вызвано? У вас есть основания считать, что процессор 8266 плохо справляется с целочисленной арифметикой на 5-10 значениях каждые 200 мс?
Linux Firefox
 Boulder
0
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
У вас там не целочисленная арифметика, а каша из рукодельных переменных с фиксированной запятой спотолочной точности и арифметики с типом double (эмулируемой компилятором, если я правильно понимаю) и переводом туда-обратно. Ну и ранее упомянутые ошибки в программировании и математике, а также ошибки округления.
Linux Firefox
 Москва
0
0
Чук
Ну по поводу отсутствия приведения типов - согласен.
А вот вместо СКО вы вычисляете хрень какую-то, даже не её квадрат
Кстати, если у ESP есть математика, то можно считать всё в double или float (в зависимости от) и приводить только результат.
Linux Firefox
 Boulder
0
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Там не «отсутствие приведения типов», а неявное приведение к double (из-за FLT_INFLUENCE и FLT_THRESHOLD) и потом обратно к int. Если уж производительность не важна, то гораздо лучше было бы везде использовать float (включая константы: «0.5f» вместо «0.5») с вашими школьными формулами «в лоб», тогда бы хоть понятно было, что происходит. А эта порнография с FLT_TOL получилась одновременно и нечитаемой, и тормозной.

> А вот вместо СКО вы вычисляете хрень какую-то, даже не её квадрат

Если вы прогуливали теорвер/статистику, то посмотрите сюда:

https://en.wikipedia.org/wiki/Standard_deviation#Rapid_calculation_methods

Это вообще-то стандартный метод (с потенциальными проблемами, но в данном случае целочисленной арифметики без переполнения — самый лучший). Я, правда, в формуле дисперсии немного накосячил с buflen, должно быть

дисперсия = (buflen × sum2 − sq(sum)) / (buflen × (buflen − 1))

или

дисперсия = (sum2 − sq(sum) / buflen) / (buflen − 1),

но в самом коде сравнения всё правильно.
Linux Firefox
 Boulder
0
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> из-за FLT_INFLUENCE

И на самом деле, как я уже писал, эта идея с FLT_INFLUENCE вообще плохая. Внутри пика нужно не подправлять параметры фона каким-то необъяснимым способом, а просто не обновлять их.

Ну и вместо статистики по фиксированному массиву предыдущих значений я бы использовал обновление параметров с экспоненциальным затуханием. Тогда вместо массива нужно всего две переменные, которые к тому же можно/нужно сохранять между прогонами, чтобы не было всякого этого «не успевает набрать статистику» и специального кода для неполного массива.
Linux Firefox
 Москва
0
0
Чук
Хм, занятный метод, правда я не совсем понял как он получается из классического, но пусть. Тем проще. И без корней тоже можно обойтись. При 10-битном входе (а фактически 9-битном) и буфере в 32 значения всё влезает в long даже с запасом.
Linux Firefox
 Boulder
0
0
Михаил (#1684620)
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
> правда я не совсем понял как он получается из классического

Для этого вполне достаточно школьной алгебры:

https://de.wikipedia.org/wiki/Verschiebungssatz_%28Statistik%29#Erl.C3.A4uterung_am_Fall_einer_endlichen_Folge_von_Zahlen:_Das_Stichprobenmittel
Windows Firefox
 Москва
0
0
Johny-----------
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Что не сделает Лео чтоб не покупать нормальный Abloy / Cisa / mottura , в которых уже и контакты все нужные где надо стоят и конструкция оттестирована сотнями тысяч хомячков.

всего комментариев: 247

<< предыдущая заметка следующая заметка >>