a hatotavot nem az ado teljesitmenyevel kell novelni, a leirt okbol. hanem az antenna meretenek es nyeresegenek novelesevel. az ugyanis a vetelt is aranyosan javitja. jo nagy tekercs kell. a tavolsag is no, meg egyszeruen eleg sokminden lesz kozel a tekercshez mert a tekercs nagy. persze ami eredetileg 5cm-t tud, az ettol sem fog felmetert.
A bolti lopásgátlók jelentős része nem rfid komplikációval működik, egyszerűen csak egy pinget küldd vissza, nem jelsorozatot. Az rfid lényege pont az, hogy érdemi információt hordoz a visszasugárzott adatcsomag (az rfid vevők egy része nem is sugároz folyamatosan, hanem impulzusokat küldd és közöttük megfelelő ideig figyeli, hogy van-e válasz). Az erősebb adóval nem fog semmit elérni, mert a passzív oldali adó teljesítményét nem fogod tudni ezzel megváltoztatni, márpedig ez szükséges lenne a hatótáv érdemi növeléséhez). Van ennél jóval nagyobb hatótávú rfid is, csak azt kevéssé fogod tudni ebayen 15 dollárért megvenni.
Beléptetőrendszert, akár csak macskára is, nem szokás önálló telepről működtetni, legalább két szinten kell biztosítani (vagyis egy hálózati táp és egy önfelügyelő hálózatfüggetlen táp, nagyjából akku), vagy elfogadod, hogy a macska áramszünet és/vagy telepkimerülés esetén nem tud bejönni, emiatt nyávogni és kaparászni fog adott esetben órákon át.
Az rfid oldalán van ez: Maximum effective distance up to 50mm
A cabinet lock oldalán meg ez: Unlock time:1 second, Power on < 10 seconds
Szerintem itt még nincs software, csak egy elektromágnes, ami 10 W-ot fogyaszt, és gondolom a túlmelegedés miatt maximálták 10 másodpercben a bekapcsolási időt.
Itt inkább az van, hogy nem szeretik az idegen macskákat, ivartalanított mindkettő, hanem vagy félnek vagy harcolnak.
Másrészt a max 10 másodpercig behúzva tartható lock se jó, mert sokszor a macska nem azonnal jön be, hanem nézelődik, "gondolkodik" hogy mi legyen, közben ha elenged a lock, akkor nem tud bejönni a macska.
Ha tekernék a macskaajtó köré meneteket, akkor bele tudnék egy erősebb impulzuscsomagot is küldeni, a bolti lopásgátló kapukhoz hasonlóan, akár több 10 cm-ről is működhet egy papírlap vékonyságú címkével. Csak semmit nem tudok róla, kész rendszert venni meg drága lenne.
Fejleszteni meg az elemeset látom könnyebbnek, valami adó, amit a ráküldött impulzuscsomag kapcsol be, kiküldi a kódot és visszaalszik. Lehet hogy még kód se kellene, csak pl. egy ultrahang kattanás, az idegen macska nyakában nem lesz ilyen. De az ajtón levő tekercsnek vagy állandóan küldeni kell a jelet, vagy érzékelni, hogy közeledik a macska. A legnagyobb baj, hogy nem tudom mikor merül ki az elem, és a macska nem tud bejönni.
Van egy másik ötlet, gyűjtök hozzá infókat. Van a bejárati ajtón egy macskaajtó, az udvarba bejárnak idegen macskák, és szeretném elkerülni hogy bejöjjenek a házba. Hogyan ismerjem föl a saját macskákat? Rfid tag milyen távolságból működik? Pl. ez.
Hol találok két stabil állapotú reteszt? Ezzel szeretném a lengő macskaajtót befelé blokkolni úgy, hogy nem fogyaszt áramot csak az átbillentéskor. Jön a saját macska, érzékeli, hogy nyitni kell, impulzus kinyit, amíg ott a macska vár, ha eltávolodik bezár.
Nekem nem tűnt ilyen kényesnek, bár csak 2-3 sketchet töltöttem rá, amikor befejezte a fordítást és kiírta a memória adatokat, akkor nyomtam egyet, és már töltötte is föl. Mintha elég sokat várna az IDE a fordítás elkészülte után, és közben gondolom vár a válaszra, de ez úgy 8-10 másodperc.
Mindegy, a pro mini nem tesztelésre van, ebbe a végleges program kerül, és valószínűleg bootloader nélkül, szóval nem is az usb-soros konverterrel kell írni.
Arra figyelj, hogy ha programozóval rakod fel a programot, akkor az felülírja a bootloadert! Természetesen a programozóval vissza is tudod rá rakni.
Pont ezt szeretném kipróbálni, hogy bootloader nélkül milyen gyorsan éled. A wc-lámpa threedben derült ki, hogy 1-2-3 másodperc kell a bootloadernek, míg átadja a futást a sketchnek, ráadásul még a 13-as pinen villogtat is. Remélhetőleg bootloader nélkül ezek nem lesznek, hanem ahogy a táp megjön elindul a sketch, és csak azt csinálja amit kell neki. A tápot is úgy van értelme tesztelni, ha nincs bootloader, hogy éledjen, milyen legyen stb.
Marad nekem a fő problémám, a VB6-ban írt kód és az arduinós összehozása I2C kommunikációra.
Az I2C buszon Ds1624 hőmérők vannak, erre van a VB6 ban írt program:
VERSION 5.00 Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "mscomm32.ocx" Begin VB.Form frm_thermometer ClientHeight = 7710 ClientLeft = 60 ClientTop = 345 ClientWidth = 8055 Icon = "frm_thermometer.frx":0000 LinkTopic = "Form1" ScaleHeight = 7710 ScaleWidth = 8055 StartUpPosition = 2 'Képernyő közepére Begin VB.Frame Frame4 Height = 1335 Left = 120 TabIndex = 11 Top = 0 Width = 6135 Begin VB.CheckBox check_start_minimized Caption = "start minimized" Height = 375 Left = 4200 TabIndex = 26 ToolTipText = "Start as an icon in taskbar" Top = 480 Width = 1335 End Begin VB.CheckBox check_log_to_file Caption = "log data to file" Height = 375 Left = 4200 TabIndex = 17 ToolTipText = "log temperatures on text file ""pc_thermometer.txt""" Top = 840 Width = 1335 End Begin VB.CheckBox check_farenheit Caption = "use Farenheit" Height = 375 Left = 4200 TabIndex = 12 ToolTipText = "Show as Fahrenheit or Celsius (centigrade)" Top = 120 Width = 1335 End Begin VB.Label külsődéli Alignment = 2 'Középre BackStyle = 0 'Átlátszó Caption = "külső déli" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 375 Left = 2280 TabIndex = 16 Top = 120 Width = 1215 End Begin VB.Label padlószint Alignment = 2 'Középre BackStyle = 0 'Átlátszó Caption = "padlószint" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 375 Left = 720 TabIndex = 15 Top = 120 Width = 1215 End Begin VB.Label label_temperature_külsődéli Alignment = 2 'Középre Caption = "--.---" BeginProperty Font Name = "MS Sans Serif" Size = 17.25 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 735 Left = 2040 TabIndex = 14 Top = 480 Width = 1815 End Begin VB.Label label_temperature_padlószint Alignment = 2 'Középre Caption = "--.---" BeginProperty Font Name = "MS Sans Serif" Size = 17.25 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 735 Left = 120 TabIndex = 13 Top = 480 Width = 1815 End End Begin VB.Frame Frame3 Caption = "Sample time" Height = 2055 Left = 4560 TabIndex = 6 Top = 4440 Width = 1575 Begin VB.OptionButton option_1_min Caption = "1 min." Height = 375 Left = 240 TabIndex = 10 Top = 1440 Width = 855 End Begin VB.OptionButton option_30_sec Caption = "30 sec." Height = 375 Left = 240 TabIndex = 9 Top = 1080 Width = 855 End Begin VB.OptionButton option_6_sec Caption = "6 sec." Height = 375 Left = 240 TabIndex = 8 Top = 720 Width = 855 End Begin VB.OptionButton option_1_sec Caption = "1 sec." Height = 375 Left = 240 TabIndex = 7 Top = 360 Value = -1 'True Width = 855 End End Begin VB.Frame Frame2 Caption = "N. of sensor ICs" Height = 2055 Left = 2400 TabIndex = 1 Top = 4440 Width = 2055 Begin VB.OptionButton option_double BeginProperty Font Name = "MS Sans Serif" Size = 13.5 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 375 Left = 240 TabIndex = 3 Top = 1080 Width = 375 End Begin VB.OptionButton option_single BeginProperty Font Name = "MS Sans Serif" Size = 13.5 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 375 Left = 240 TabIndex = 2 Top = 360 Value = -1 'True Width = 375 End Begin VB.Label Label3 Caption = "double IC (indoor + outside)" Height = 615 Left = 720 TabIndex = 5 Top = 1200 Width = 1215 End Begin VB.Label Label2 Caption = "single IC (indoor temperature)" Height = 735 Left = 840 TabIndex = 4 Top = 360 Width = 1095 End End Begin VB.Frame Frame1 Caption = "Com port:" Height = 2055 Left = 120 TabIndex = 0 Top = 4440 Width = 2175 Begin VB.OptionButton option_com8 Caption = "Com8" Height = 375 Left = 1200 TabIndex = 25 Top = 1440 Width = 855 End Begin VB.OptionButton option_com7 Caption = "Com7" Height = 375 Left = 1200 TabIndex = 24 Top = 1080 Width = 855 End Begin VB.OptionButton option_com6 Caption = "Com6" Height = 375 Left = 1200 TabIndex = 23 Top = 720 Width = 855 End Begin VB.OptionButton option_com5 Caption = "Com5" Height = 375 Left = 1200 TabIndex = 22 Top = 360 Width = 855 End Begin VB.OptionButton option_com4 Caption = "Com4" Height = 375 Left = 120 TabIndex = 21 Top = 1440 Width = 855 End Begin VB.OptionButton option_com3 Caption = "Com3" Height = 375 Left = 120 TabIndex = 20 Top = 1080 Width = 855 End Begin VB.OptionButton option_com2 Caption = "Com2" Height = 375 Left = 120 TabIndex = 19 Top = 720 Width = 855 End Begin VB.OptionButton option_com1 Caption = "Com1" Height = 375 Left = 120 TabIndex = 18 Top = 360 Width = 855 End End Begin VB.Timer Timer1 Interval = 1000 Left = 240 Top = 6840 End Begin MSCommLib.MSComm MSComm1 Left = 2400 Top = 6720 _ExtentX = 1005 _ExtentY = 1005 _Version = 393216 DTREnable = -1 'True RTSEnable = -1 'True End Begin VB.Label ad_ertek Height = 735 Left = 6360 TabIndex = 41 Top = 3120 Width = 1575 End Begin VB.Label ADC Caption = "ADC" Height = 495 Left = 6240 TabIndex = 40 Top = 1560 Width = 1575 End Begin VB.Label label_temperature_ADC Caption = "--,---" BeginProperty Font Name = "MS Sans Serif" Size = 13.5 Charset = 238 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 615 Left = 6360 TabIndex = 39 Top = 2280 Width = 1455 End Begin VB.Label Label_temperature_opoph424el Alignment = 2 'Középre Caption = "--.-" BeginProperty Font Name = "MS Sans Serif" Size = 17.25 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 4320 TabIndex = 38 Top = 3840 Width = 1695 End Begin VB.Label OPOPH424EL Caption = "OPOP H424 EL" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 4320 TabIndex = 37 Top = 3000 Width = 1695 End Begin VB.Label Label_temperature_opoph424be Alignment = 2 'Középre Caption = "--.-" BeginProperty Font Name = "MS Sans Serif" Size = 17.25 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 4320 TabIndex = 36 Top = 2280 Width = 1695 End Begin VB.Label OPOPH424BE Alignment = 2 'Középre Caption = "OPOP H424 BE" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 4320 TabIndex = 35 Top = 1560 Width = 1695 End Begin VB.Label Label_temperature_boiler Alignment = 2 'Középre Caption = "--.-" BeginProperty Font Name = "MS Sans Serif" Size = 17.25 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 2280 TabIndex = 34 Top = 3840 Width = 1815 End Begin VB.Label Boiler Alignment = 2 'Középre Caption = "Boiler" BeginProperty Font Name = "MS Sans Serif" Size = 12 Charset = 238 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 2880 TabIndex = 33 Top = 3120 Width = 1215 End Begin VB.Label Label_temperature_fancoilel Alignment = 2 'Középre Caption = "--.-" BeginProperty Font Name = "MS Sans Serif" Size = 17.25 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 120 TabIndex = 32 Top = 3600 Width = 1815 End Begin VB.Label Label_temperature_fancoilbe Alignment = 2 'Középre Caption = "--.-" BeginProperty Font Name = "MS Sans Serif" Size = 17.25 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 120 TabIndex = 31 Top = 2160 Width = 1815 End Begin VB.Label fancoilel Alignment = 2 'Középre Caption = "Fan-Coil El" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 120 TabIndex = 30 Top = 2880 Width = 1455 End Begin VB.Label fancoilbe Alignment = 2 'Középre Caption = "Fan-Coil Be" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 120 TabIndex = 29 Top = 1440 Width = 1455 End Begin VB.Label label_temperature_radiator Alignment = 2 'Középre Caption = "--.-" BeginProperty Font Name = "MS Sans Serif" Size = 17.25 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 375 Left = 2280 TabIndex = 28 Top = 2280 Width = 1815 End Begin VB.Label radiator Alignment = 2 'Középre Caption = "radiator" BeginProperty Font Name = "MS Sans Serif" Size = 12 Charset = 238 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 495 Left = 2880 TabIndex = 27 Top = 1560 Width = 1215 End End Attribute VB_Name = "frm_thermometer" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Dim address_adc As Double Dim parancs As Double Dim feny_ertek As Long Dim szamlalo
Private Sub ad_szoveg_Click()
End Sub
Private Sub ADC_label_Click()
End Sub
Private Sub Form_Load() ReadIni update_com_port update_sample_rate If check_start_minimized.Value Then Me.WindowState = vbMinimized End If End Sub
Private Sub Form_Unload(Cancel As Integer) close_iic_bus SaveIni End Sub
Private Sub option_1_min_Click() update_sample_rate End Sub
Private Sub option_1_min_KeyPress(KeyAscii As Integer) update_sample_rate End Sub
Private Sub option_1_sec_Click() update_sample_rate End Sub
Private Sub option_1_sec_KeyPress(KeyAscii As Integer) update_sample_rate End Sub
Private Sub option_30_sec_Click() update_sample_rate End Sub
Private Sub option_30_sec_KeyPress(KeyAscii As Integer) update_sample_rate End Sub
Private Sub option_6_sec_Click() update_sample_rate End Sub
Private Sub option_6_sec_KeyPress(KeyAscii As Integer) update_sample_rate End Sub
Private Sub option_com1_Click() update_com_port End Sub
Private Sub option_com1_KeyPress(KeyAscii As Integer) update_com_port End Sub
Private Sub option_com2_Click() update_com_port End Sub
Private Sub option_com2_KeyPress(KeyAscii As Integer) update_com_port End Sub
Private Sub option_com3_Click() update_com_port End Sub
Private Sub option_com3_KeyPress(KeyAscii As Integer) update_com_port End Sub
Private Sub option_com4_Click() update_com_port End Sub
Private Sub option_com4_KeyPress(KeyAscii As Integer) update_com_port End Sub
Private Sub option_com5_Click() update_com_port End Sub
Private Sub option_com5_KeyPress(KeyAscii As Integer) update_com_port End Sub Private Sub option_com6_Click() update_com_port End Sub
Private Sub option_com6_KeyPress(KeyAscii As Integer) update_com_port End Sub Private Sub option_com7_Click() update_com_port End Sub
Private Sub option_com7_KeyPress(KeyAscii As Integer) update_com_port End Sub
Private Sub option_com8_Click() update_com_port End Sub
Private Sub option_com8_KeyPress(KeyAscii As Integer) update_com_port End Sub
Private Sub timer1_timer() Dim t As Double Dim unit As String If check_farenheit Then unit = "°F" Else unit = "°C" End If
t = temperature(&H48)
If t = ERROR_TEMPERATURE_NOT_READ Then MsgBox "Unable to read padlószint temperature", vbOKOnly, "Error" Timer1.Enabled = False label_temperature_padlószint.Caption = "--.---" + unit Else If check_farenheit Then t = farenheit(t) End If label_temperature_padlószint.Caption = Format(t, "#00.000") End If
If option_double Then t = temperature(&H49) If t = ERROR_TEMPERATURE_NOT_READ Then MsgBox "Unable to read külsődéli temperature", vbOKOnly, "Error" Timer1.Enabled = False label_temperature_külsődéli.Caption = "--.---" + unit Else If check_farenheit Then t = farenheit(t) End If label_temperature_külsődéli.Caption = Format(t, "#00.000") End If Else label_temperature_külsődéli.Caption = "--.---" + unit End If If option_double Then t = temperature(&H4A) If t = ERROR_TEMPERATURE_NOT_READ Then MsgBox "Unable to read radiator temperature", vbOKOnly, "Error" Timer1.Enabled = False label_temperature_radiator.Caption = "--.---" + unit Else If check_farenheit Then t = farenheit(t) End If label_temperature_radiator.Caption = Format(t, "#00.000") End If Else label_temperature_radiator.Caption = "--.---" + unit End If If option_double Then t = temperature(&H4B) If t = ERROR_TEMPERATURE_NOT_READ Then MsgBox "Unable to read fancoilbe temperature", vbOKOnly, "Error" Timer1.Enabled = False Label_temperature_fancoilbe.Caption = "--.---" + unit Else If check_farenheit Then t = farenheit(t) End If Label_temperature_fancoilbe.Caption = Format(t, "#00.000") End If Else Label_temperature_fancoilbe.Caption = "--.---" + unit End If If option_double Then t = temperature(&H4C) If t = ERROR_TEMPERATURE_NOT_READ Then MsgBox "Unable to read fancoilel temperature", vbOKOnly, "Error" Timer1.Enabled = False Label_temperature_fancoilel.Caption = "--.---" + unit Else If check_farenheit Then t = farenheit(t) End If Label_temperature_fancoilel.Caption = Format(t, "#00.000") End If Else Label_temperature_fancoilel.Caption = "--.---" + unit End If If option_double Then t = temperature(&H4D) If t = ERROR_TEMPERATURE_NOT_READ Then MsgBox "Unable to read opoph424be temperature", vbOKOnly, "Error" Timer1.Enabled = False Label_temperature_opoph424be.Caption = "--.---" + unit Else If check_farenheit Then t = farenheit(t) End If Label_temperature_opoph424be.Caption = Format(t, "#00.000") End If Else Label_temperature_opoph424be.Caption = "--.---" + unit End If If option_double Then t = temperature(&H4E) If t = ERROR_TEMPERATURE_NOT_READ Then MsgBox "Unable to read opoph424el temperature", vbOKOnly, "Error" Timer1.Enabled = False Label_temperature_opoph424el.Caption = "--.---" + unit Else If check_farenheit Then t = farenheit(t) End If Label_temperature_opoph424el.Caption = Format(t, "#00.000") End If Else Label_temperature_opoph424el.Caption = "--.---" + unit End If If option_double Then t = temperature(&H4F) If t = ERROR_TEMPERATURE_NOT_READ Then MsgBox "Unable to read boiler temperature", vbOKOnly, "Error" Timer1.Enabled = False Label_temperature_boiler.Caption = "--.---" + unit Else If check_farenheit Then t = farenheit(t) End If Label_temperature_boiler.Caption = Format(t, "#00.000") End If Else Label_temperature_boiler.Caption = "--.---" + unit End If If option_double Then t = temperature(&H32) If t = ERROR_TEMPERATURE_NOT_READ Then MsgBox "Unable to read ADC temperature", vbOKOnly, "Error" Timer1.Enabled = False label_temperature_ADC.Caption = "--.---" + unit Else If check_farenheit Then t = farenheit(t) End If label_temperature_ADC.Caption = Format(t, "#00.000") End If Else label_temperature_ADC.Caption = "--.---" + unit End If If option_double Then frm_thermometer.Caption = label_temperature_padlószint.Caption + " ( out " + label_temperature_külsődéli.Caption + " )" Else frm_thermometer.Caption = label_temperature_padlószint.Caption End If
End Sub
Private Function temperature(address As Integer) As Double
Dim temperature_int As Long Dim temperature_frac As Long 'address = address(&H48) address = address * 2 On Error GoTo errors open_iic_bus MSComm1.object
'/*resettiamo bene il chip*/ IIC_stop '/**/ IIC_start IIC_tx_byte &H90 + address IIC_tx_byte &HAC IIC_tx_byte &H2
temperature_frac = IIC_rx_byte(0) temperature = (temperature_int * 256 + temperature_frac) / 128 * 5 / 10 If temperature_int >= 128 Then temperature = temperature - 256 End If IIC_stop Exit Function
errors: temperature = ERROR_TEMPERATURE_NOT_READ End Function Private Function update_sample_rate() If option_1_sec Then Timer1.Interval = 1000 ElseIf option_6_sec Then Timer1.Interval = 6000 ElseIf option_30_sec Then Timer1.Interval = 30000 ElseIf option_1_min Then Timer1.Interval = 60000 Else Timer1.Interval = 1000 End If End Function Private Function update_com_port() If MSComm1.PortOpen Then MSComm1.PortOpen = False End If
If option_com1 Then MSComm1.CommPort = 1 Timer1.Enabled = True ElseIf option_com2 Then MSComm1.CommPort = 2 Timer1.Enabled = True ElseIf option_com3 Then MSComm1.CommPort = 3 Timer1.Enabled = True ElseIf option_com4 Then MSComm1.CommPort = 4 Timer1.Enabled = True ElseIf option_com5 Then MSComm1.CommPort = 5 Timer1.Enabled = True ElseIf option_com6 Then MSComm1.CommPort = 6 Timer1.Enabled = True ElseIf option_com7 Then MSComm1.CommPort = 7 Timer1.Enabled = True ElseIf option_com8 Then MSComm1.CommPort = 8 Timer1.Enabled = True Else MSComm1.CommPort = 1 Timer1.Enabled = False End If
End Function
Private Function farenheit(ByVal t As Double) farenheit = 32 + 9 / 5 * t End Function
Private Function log_to_file() If check_log_to_file Then Open "pc_thermometer.csv" For Append As #1 Print #1, Date$, Time$, label_temperature_padlószint.Caption, label_temperature_külsődéli.Caption, Label_temperature_fancoilbe.Caption, Label_temperature_fancoilel.Caption, Label_temperature_boiler.Caption, Label_temperature_opoph424el.Caption, Label_temperature_opoph424be.Caption, label_temperature_radiator.Caption, feny_ertek Close #1 End If End Function
A kérdés, hogyan kell az arduino slave móddal kapcsolatot teremteni a VB6 kódból?
> Neked is igazad van, a pro mini rst lábát használjuk DTR kapcsolatra.
Nono! Ez így nem precíz, pont fordítva van. :-)
A RS232 szabványban leírt Data Terminal Ready jelet (ami a szabvány szerint egészen másra való) használjuk arra, hogy reseteljük a mikrokontrollert. A DTR aktív alacsony jel, ez húzza az MCU reset lábát a földre.
Tehát a pro mini nem küld az RS232 szerinti Data Terminal Ready jelet sehova, és nem is dolgoz fel ilyet.
Van viszont reset lába, amit a soros kapcsolat DTR jele aktivál, ha bootloaderes feltöltést használsz. De próbálj ki olyan terminál szoftvert, amiben ez kapcsolható. A DTR gombot nyomogatva, az Arduino resetelni fog.
Az általad mellékelt rajzon a DTR annyit jelent, hogy oda kell kötni az USB-TTL serial DTR lábát. A rajzon az is látszik, hogy a reset lábon van egy 0,1uF kerámia kondenzátor, aminek a másik végre kell a DTR-t kötni. Érdemes ismerni ezeket a felépítésbeli, működési sajátosságokat. Láttam már olyat, aki a pro mini után egy másik boardra nem tudta feltölteni a programot. (Hova kösse a DTR-t? Resetre? De miért nem resetel? Stb.)
De hívhatjuk DTR lábnak is. Csak megtévesztő. ;-) Ha ez így szerepel a pro minin, akkor az nem jó ötlet. Keresgéltem a neten, de az általam talált képeken a pro mininek RST jelölésű kivezetése van, DTR jelű pedig nincs.
Ha nincs DTR akkor az fájdalmas. Átmenetileg próbálkozhatsz a jó reflexszel: amikor úgy látod, hogy kész a program fordítás és indulna a feltöltés, gyorsan nyomd meg a pro mini-n a reset gombot egyszer.
Az Arduino-s mikrokontroller reset után vár egy kicsit, hogy kap-e programozási parancsot, de ha nem, akkor továbbugrik és a már korábban feltöltött programot futtatja.
Régen 8 másodpercet várt, de mióta a DTR-es módszer van, ez már minimális idő, ezért kellenek jó reflexek :-)
Kár. Az a láb kezeli a reset-et bootloaderes feltöltéskor. Érdemes olyan átalakítót venni, amin ez ki van vezetve.
A PL2303-nak van DTR lába, forrassz rá egy kivezetést!
Nekünk mondjuk nem voltak jó tapasztalataink ezzel az IC-vel. Hiába kötöttük be a DTR lábat, nem resetelte az MCU-t. Valószínűleg driver probléma lehetett, de nem álltunk neki jelszintet mérni, meg hibát keresni.
A Silabs CP2102 hasonló áron van, WinCE-től kezdve Win 8-ig van hozzá driver, ahogy minden verziójú (Power és Intel architektúrájú) OSX-hez, Linuxhoz, és Androidhoz is. És rögtön működött a DTR lábra kötött reset is.
És tényleg, resetet nyomva átmegy a sketch. Na akkor mégis van bootloader, de összerakom az unot programmernek, ki kell próbálni azt is, meg meg akarom nézni a direkt sketch futtatást is.