nico_2010 Postat Iunie 2, 2013 Partajează Postat Iunie 2, 2013 Comanda $sim se foloseste doar pentru simulare? sau afecteaza in oarecare masura si montajul in sine?Doar pentru simulare sub BASCOM. Pentru simulare in alt mediu da erori. Link spre comentariu
costyy86 Postat Iunie 2, 2013 Partajează Postat Iunie 2, 2013 Multumesc...nu ma interesa in alte medii, (limbaje de programare) decat in realizarea practica a montajului. Link spre comentariu
nico_2010 Postat Iunie 2, 2013 Partajează Postat Iunie 2, 2013 Multumesc...nu ma interesa in alte medii, (limbaje de programare) decat in realizarea practica a montajului.Simulare in alt mediu insemna Proteus sau un alt program care permite simularea functionarii uC si nu programare in alte medii de programare. Link spre comentariu
yo9hnf Postat Iunie 7, 2013 Autor Partajează Postat Iunie 7, 2013 Aveti idee cum as putea sa "insumez" doua variabile pentru a le folosi impreuna intr-un CASE ? Ceva in genul acesta as dori : Select Case senzor1 and senzor2 Case.... End select Link spre comentariu
nico_2010 Postat Iunie 7, 2013 Partajează Postat Iunie 7, 2013 Aveti idee cum as putea sa "insumez" doua variabile pentru a le folosi impreuna intr-un CASE ? Ceva in genul acesta as dori : Select Case senzor1 and senzor2 Case.... End select BASCOM nu accepta astfel de comenzi.Incearca: IF senzor1=1 AND senzor2 = 1 Then ' (sau 0, functie de cum reactioneaza senzorii tai la activare)codul tau ' (cum vrei sa se comporte programul)end if Link spre comentariu
ratza Postat Iunie 10, 2013 Partajează Postat Iunie 10, 2013 Case nu e altceva decît un set de if else scris altfel. Link spre comentariu
yo9hnf Postat Iunie 10, 2013 Autor Partajează Postat Iunie 10, 2013 Multumesc nico_2010 ! Nu stiu daca ma ajuta exact functia IF....Senzorii sunt doi termistori NTC ale calor valori (decimale, pe care le folosesc eu) se invart intre 800 si 150 (in mare). Desi ambii termistori sunt amplasati pe/in obiecte diferite, ele stau in acelasi mediu care trebuie racit....ma gandeam sa adun valorile senzorilor si apoi sa folosesc CASE SELECT (de ex daca am peste S1+S2 > 1100 sa nu-mi faca nimic programul, Case S1+S2 700 to 900 : ventilator 150 etc). O sa incerc si asa sa vad cum reactioneaza. Link spre comentariu
yo9hnf Postat Iunie 10, 2013 Autor Partajează Postat Iunie 10, 2013 Nu am reusit sa aduc cele doua variabile nici cu var(x) sau str(x).Acum incerc cu IF senz1>ceva or senz2>ceva , dar imi executa rutina numai daca ambele variante indeplinesc conditia. Cred ca normal era sa-mi execute si daca unul (oricare) dintre cei doi senzori indeplineste conditia. Link spre comentariu
nickrvl Postat Iunie 10, 2013 Partajează Postat Iunie 10, 2013 Am folosit ceva asemanator intr-o sursa de alimentare, doi termistori, unul pe radiator tranzistori altul pe traf alimentare, fiecare cu ventilatorul sau, fiecare termistor supreavegheaza temperatura in parte si porneste ventilatorul cu turatie variabila incepind de la 32 grade pina la 55 grade unde are turatie maxima. La 70 grade intra in stop termic. '************ Configurare porturi si variabile pentru ventilator traf (th1)'Config Portb.1 = OutputOutpwm1 Alias Pinb.1Config Outpwm1 = OutputDim Valadc1 As WordDim Grade1 As WordDim Constgrade1 As WordConstgrade1 = 535Dim Calcpwm1 As WordDim Pwm_1 As Word'************ Configurare porturi si variabile pentru ventilator radiator (th2)'Config Portb.2 = OutputOutpwm2 Alias Pinb.2Config Outpwm2 = OutputDim Valadc2 As WordDim Grade2 As WordDim Calcpwm2 As WordDim Pwm_2 As Word.....................'************** ventilator traf (th1)Ventilator:Valadc1 = Getadc(0) 'termistor trafGrade1 = Constgrade1 - Valadc1Grade1 = Grade1 / 5Pwm_1 = Grade1 - 32Pwm_1 = Pwm_1 * 8Pwm_1 = 220 - Pwm_1If Grade1 < 32 ThenConfig Outpwm1 = InputElseConfig Outpwm1 = OutputEnd IfIf Grade1 > 55 Then Pwm_1 = 0Pwm1a = Pwm_1'************** ventilator radiator (th2)Valadc2 = Getadc(1) 'termistor radiatorGrade2 = Constgrade1 - Valadc2Grade2 = Grade2 / 5Pwm_2 = Grade2 - 32Pwm_2 = Pwm_2 * 8Pwm_2 = 220 - Pwm_2If Grade2 < 32 ThenConfig Outpwm2 = InputElseConfig Outpwm2 = OutputEnd IfIf Grade2 > 55 Then Pwm_2 = 0Pwm1b = Pwm_2If Grade2 > 70 Or Grade1 > 70 Then Gosub Stoptermic Poate te ajuta ca si idee... Link spre comentariu
yo9hnf Postat Iunie 11, 2013 Autor Partajează Postat Iunie 11, 2013 Multumesc nickrvl, dar nu ma prea ajuta. Eu am doi senzori (care citesc temperaturi diferite), si un singur ventilator. Link spre comentariu
Liviu M Postat Iunie 11, 2013 Partajează Postat Iunie 11, 2013 Acum incerc cu IF senz1>ceva or senz2>ceva , dar imi executa rutina numai daca ambele variante indeplinesc conditia. Cred ca normal era sa-mi execute si daca unul (oricare) dintre cei doi senzori indeplineste conditia.Si mie mi se pare ca if-ul tau e corect. Singura problema la care ma pot gandi in cazul asta e ordinea de evaluare a expresiei. De aia, de cate ori am dubii legate de ordinea in care compilatorul imi va evalua expresiile, pun paranteze.Adicaif((senz1>ceva) or (senz2>ceva))Asa sunt sigur ca evaluarea e cum vreau eu, nu if(((senz1>ceva) or senz2) > ceva) de exemplu.PS Mi-e greu de sa inteleg de ce cei care au probleme cu cate o bucata de cod nu posteaza si bucata de cod care nu merge, ca sa fie mai usor de discutat. Link spre comentariu
yo9hnf Postat Iunie 11, 2013 Autor Partajează Postat Iunie 11, 2013 Am incercat si cu doua functii if pentru fiecare senzor in parte dar tot nu merge decat daca sunt incalziti ambii senzori. Am incercat si cu paranteze acum, dar imi da eroare de sintaxa : Sub Termostat: Senzor1 = Getadc(2) Senzor2 = Getadc(3) If ((senzor1 > 780) Or (senzor2 > 780)) Then Compare1a = 255 Else Compare1a = 0 End If Locate 1 , 1 Lcd "senzor 1=" ; Senzor1 Locate 2 , 1 Lcd "senzor 2=" ; Senzor2 End Sub REVIN : Acesta functioneaza doar pentru senzor2: Sub Termostat: Senzor1 = Getadc(2) Senzor2 = Getadc(3) If Senzor1 > 750 Then Compare1a = 255 Else Compare1a = 0 End If If Senzor2 > 750 Then Compare1a = 255 Else Compare1a = 0 End If Locate 1 , 1 Lcd "senzor 1=" ; Senzor1 Locate 2 , 1 Lcd "senzor 2=" ; Senzor2 End Sub Link spre comentariu
Liviu M Postat Iunie 11, 2013 Partajează Postat Iunie 11, 2013 Am incercat si cu paranteze acum, dar imi da eroare de sintaxa : If ((senzor1 > 780) Or (senzor2 > 780)) Then In visual basic expresia de mai sus (ma rog, una echivalenta) functioneaza OK.N-am folosit niciodata Bascom, da' as incerca fara parantezele exterioare:If (senzor1 > 780) Or (senzor2 > 780) Then Link spre comentariu
yo9hnf Postat Iunie 11, 2013 Autor Partajează Postat Iunie 11, 2013 Am incercat si decat cu doua perechi de paranteze dar tot nu-i buna sintaxa. Link spre comentariu
ratza Postat Iunie 11, 2013 Partajează Postat Iunie 11, 2013 Păi dacă ai NTC nu ar fi normal să ai aşa? IF senzor1 < 780 OR senzor2 < 780 THEN Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum