kurant
-
Innlegg
65 -
Ble med
-
Besøkte siden sist
Innholdstype
Profiler
Forum
Hendelser
Blogger
Om forumet
Innlegg skrevet av kurant
-
-
Er det virkelig bare 230W per stasjon? det er da ikke nok til å drive en gjennomsnittlig pc + skjerm
-
Python koden til kurant er enkel og lage interface(GUI)som styrer utifra den er lett.
Binder "ser.write('R128')" til en slider med 0-128.
Kan ha knapper for for lys(RBG)
Du får tenke på kan nok hjelpe til med koding,viss det trengs.
Ja det er faktisk akkurat det jeg har gjort, vha PyQT. Jeg viste bare et lite avsnitt av koden for enkelhets skyld. Hvis det er interesse for det kan jeg legge ut hele koden senere, jeg har den ikke her.
-
Bruk preprosesseringsdirektivet #define for å definere konstanter. Og sett opp en timer med interrups på et passende intervall for å regne ut rpm og skrive det ut på USARTen.
I følge referanseverket til Arduino er const å anbefale over #define, og meiner du at ein timer skal polle inputen, og ikkje flanketrigging slik eg har satt opp? Om du skal rekne ut RPM må du vel til med flyttalsutrekningar, og sidan det er ganske tidkrevande på ein mikrokontroller ville eg heller gjort dette i programmvaren i PCen.
konstanter er alltid å foretrekke fremfor #DEFINE direktiver, man kan få noen svært interessante bugs ved bruk av sistnevnte da det ikke bare mangler typesikkerhet, men er en direkte substitusjon av hva som helst rett inn i koden.
Det er forøvrig ikke nødvendig med flyttallsberegninger, man klarer seg fint med skalering av fixed-point verdier. Uansett er det et godt tips å gjøre disse beregningene på PCen som du sier da det gir mye mer fleksibilitet.
Har omdreiningshastigheten på hjulet blitt nevnt forresten? Dette er jo relevant for implementeringen. Dersom det går for fort er det kanskje nødvendig med mer prosessering på arduinoen for å unngå unødig mye data på linken.
Som andre har skrevet er jeg også enig i at en optisk sensor er en lite robust løsning i dette tilfellet. En hall-sensor virker som en mye bedre løsning
-
Hei!
Trenger å sende noen bytes gjennom serial porten til et arduino kort for å styre noen leds.
det eg trenger å sende er verdier fra 0 til 1023.
korleis gjør eg det i c++? bruker microsoft visual c++.
trenger tips til en enkel kode som gjør dette
Dette er ikke akkurat et svar på spørsmålet ditt, men dersom det ikke er noen spesielt vektig grunn til at du vil bruke C++ er ikke dette et godt språk til formålet. Jeg har nettopp skrevet en RGB-lysdiodekontrollapplikasjon til arduino hvor jeg brukte python. Her får du jobben gjort med et par linjer kode:
import serial ser = serial.Serial(2,9600) ser.write('R128')
Hvor 'R' indikerer fargen, og '128' indikerer intensiteten.
Som du ser bruker jeg ASCII-koding, da dette er betydelig enklere å håndtere enn å sende binære verdier. Det er ikke så effektivt, men i slike applikasjoner har det ingen betydning.
Denne verdien blir dekodet av en tilstandsmaskin som kjører på arduinoen med gjevne intervaller
ledctrl_t get_cmd() { int i; char ledID; char ledval[5] = {'0','0','0','',''}; ledctrl_t ledctrl; // search for valid LED identifier while( ledID != 'R' && ledID != 'G' && ledID != 'B' ) { if(Serial.available() == 0) { ledID = '0'; break; } ledID = Serial.read(); } // did not find a valid header if(ledID == '0'){ ledctrl.id = 0; return ledctrl; } else { // set the LED pin switch (ledID) { case 'R' : ledctrl.id = redled; break; case 'G' : ledctrl.id = grnled; break; case 'B' : ledctrl.id = bluled; break; default : ledctrl.id = 0; } // fetch the intensity value if(Serial.available() >= 3) { for(i=0;i<3;++i) ledval[i] = Serial.read(); ledctrl.val = atoi(ledval); } if(ledctrl.val > 255) ledctrl.val = 255; if(ledctrl.val < 0) ledctrl.val = 0; return ledctrl; } }
-
God morgen
Takk for hjelpen alle, jeg skal se om jeg kan få dette til å fungere
-
God dag
Er det noen som vet om det er mulig å kopiere elementene i en stl vector vha memcpy? dvs, ligger alle elementene kontinuerlig etter hverandre i minnet?
-
Siden du har studiomonitorer regner jeg med at du er litt ekstra nøye på lydkvalitet, og da kan nok et strømfilter og skikkelig nettkabel være en idé, men da begynner det å koste litt.
Vær så snill, ikke anbefal "skikkelige nettkabler". dette er ren svindel beregnet på å trekke penger ut av lettlurte hifi-galninger. Det er ingenting en nettkabel kan gjøre for å redusere støy som ikke en billig ferrittkjerne kan gjøre også
-
Jeg regner jo med jeg har misforstått noe her, men er ikke poenget med sikringer at de skal ryke når man har å gjøre med en kortslutning?
-
Så jeg må altså bruke en lavere gatespenning. Hvilket nivå burde man ligge på?. Jeg ser IGBTen jeg har valgt har "gate threshold voltage" på Min. 3.5 Typ. 4.5 og Max. 5.5V. Så hvis jeg legger meg på ca. 5V skulle vel det gå bra?.
Når det gjelder tilbakekobling fra last-siden så vet jeg ikke helt hvordan dette gjøres. Men jeg tipper jeg kan bruke en shunt og noen operasjonsforsterkere koblet som komparator. Men jeg tror nok ikke det blir på dette prosjektet.
Nei du må ha høyere gatespenning. Transistoren er "på" når gatespenningen er ca. 4V høyere enn emitterspenningen. Emitterspenningen er gjennomsnittlig det samme som utgangsspenningen, så hvis du vil justere utgangen opp til 30V må gatespenningen være minimum 33.5V (utgang + minimum gate threshold). Du kan nok ikke drive timerkretsen din på denne spenningen, så her må du til med en slags virtuell jord som løfter jorden på driverkretsen din opp til et slikt nivå at du får slått på transistoren. Problemet blir ytterligere komplisert av at du vil kunne justere så langt ned som til 0V på utgangen. Hvis du har 0V på utgangen kan du ikke lenger drive gaten med ~34V, for absolutt maximum gate-emitterspenning for den transistoren du har valgt er 20V. du må altså flytte jordingspunktet for driverkretsen ettersom du justerer utgangen. fullt mulig, men det kompliserer designet en hel del.
Et annet problem er at en 555-krets i utgangspunktet ikke er i stand til å drive en IGBT (eller MOSFET for den saks skyld) ved noe særlig høy frekvens. Det at disse komponentene er spenningsdrevet betyr ikke at det ikke går strøm i gaten. Gaten har en parasittisk kapasitans som må lades opp og ut når den switches henholdsvis på og av. Dette gjør at det går relativt høye strømmer der allikevel mår switchefrekvensen økes. Det vil sannsynligvis fungere på et vis, men regn med at 555-kretsen blir rimelig varm, og sannsynligvis får dramatisk redusert levetid. I tillegg vil nok påslagshastigheten på transistoren reduseres, noe som reduserer effektiviteten på regulatoren din. Men til ditt formål har dette sannsynligvis ikke så mye å si.
Det finnes dedikerte driverkretser for smps. Hvis du er interessert kan du lese denne application noten fra maxim, som forklarer ting i litt mer detalj.
-
KiCad er et gratis progam for elektronikkkonstruksjon
Jeg er litt skeptisk til open source EDA programmer. Jeg kan ikke si noe om KiCAD da jeg aldri har brukt det selv, men jeg ser blandt annet at det bare er èn utvikler på prosjektet. Han gjør det sannsynligvis på fritiden sin også. Problemet med slike programmer er at de har en masse features, men har flust med bugs som gjør mange av dem helt ubrukelig. Jeg vil sterkt anbefale å bruke eagle isteden, da dette er et kommersielt program (med mange profesjonelle utviklere) som jeg vet fungerer bra.
Som jeg selv har erfart er det veldig frustrerende å ha kommet et godt stykke i et design, for så å bare måtte gi opp på grunn av en bug i verktøyet en bruker.
-
Eagle er et godt program for å tegne skjemaer og gjøre layout til hobbybruk.
For simulering kan jeg anbefale LTspice fra linear technology.
-
Du kan bruke en mosfet transistor, denne vil ikke loade cellen din nevneverdig. Den må også tåle høy spenning og strøm. Et godt alternativ er en IRFP450, du finner den på elfa.
Du må forresten forsikre deg om at fotocellen er rask nok, en blitz varer bare i noen titalls mikrosekunder, så fotocellen bør trigge transistoren i underkant av ett mikrosekund. I tillegg så er det mulig at du ikke får utladet hele kondensatoren i slavemodulen dersom den triggende blitzen ikke er lang nok slik at transistoren stenger for tidlig. I dette tilfellet kan du bruke en tyristor som du da igjen må drive med en mosfet transistor for å unngå å laste fotocellen.
-
Jeg trenger litt hjelp med noen spørsmål her....
- Hvorfor får vi forsterkning i en transistor?
- Når du stiller på potensiometeret inn til basis, hva skjer da?
- Fellesbasistrinn har fordeler. Nevn noe
Takk på forhånd
Dette ser ut som spørsmål tatt direkte fra en skoleoppgave, hvorav spørsmålet i midten ikke kan svares på uten at du viser koblingsskjemaet som sikkert også står i oppgaven. Jeg foreslår at du forsøker å lære deg dette på egenhånd, ellers kan du like gjerne slutte på skolen.
-
Jeg kan ikke se for meg at det i noe tilfelle vil være aktuelt å produsere en serie på flere hundre tusen kort med så enkel funksjonalitet at det kan lages med et fåtall grunnleggende logiske porter. Når kompleksiteten øker utover det helt grunnleggende er det uansett billigere med en liten FPGA.. Enkle FPGAer koster ned i 5 kroner i store serier.
Når det gjelder forståelse er jeg forsåhvidt enig. Men da bør man holde seg unna J/K vipper, og heller forholde seg til D-vipper, som både er enklere å forstå, og er mye nærmere registrene man faktisk har i en FPGA. J/K vipper har en del ekstra funksjonalitet som bare bidrar til å forvirre.
-
Ja jeg vet at dette ikke har noe med spørsmålet å gjøre, men jeg syns at det blir litt teit at de fortsatt gir slike oppgaver på videregående. Å designe digitale kretser vha J/K vipper og desslike er en teknikk som overhodet ikke blir brukt lengre i industrien. Her skriver man funksjonaliteten i et HDL (hardware description language), og syntetiserer til programmerbare logiske kretser (CPLD eller FPGA). Dette er relativt billig nå også, og i tillegg ikke så altfor vanskelig å komme i gang med. koden under (her i VHDL) vil utføre oppgaven og mer til.
entity stepctrl is port ( clk, arst_n : in std_logic; enable : in std_logic; ctrl : out std_logic_vector(3 downto 0)); end stepctrl; architecture rtl of stepctrl is type step_seq_t is array (0 to 7) of std_logic_vector(3 downto 0); constant step_seq : step_seq_t := (0 <= "1010", 1 <= "1000", 2 <= "1001", 3 <= "0001", 4 <= "0101", 5 <= "0100", 6 <= "0110", 7 <= "0010"); -- registers signal seq_cnt_reg : unsigned(2 downto 0); -- sequence counter begin -- rtl -- purpose: sequence counter -- type : sequential -- inputs : clk, arst_n, seq_cnt_reg -- outputs: seq_cnt_reg p_seq_cnt : process (clk, arst_n) begin -- process p_seq_cnt if arst_n = '0' then -- asynchronous reset (active low) seq_cnt_reg <= (others => '0'); elsif rising_edge(clk) then if enable = '0' then seq_cnt_reg <= (others => '0'); else seq_cnt_reg <= seq_cnt_reg + 1; end if; end if; end process p_seq_cnt; -- output assignment ctrl <= step_seq(seq_cnt_reg) when enable = '1' else (others => '0'); end rtl;
-
Hei lurer på hvordan man representerer f.eks. tall som 3.14 binært. Vil ikke bruke float men heller forstå logikken bak det.
Det er to måter å gjøre det på: Fixed point, eller floating point. Sistnevnte er den representasjonen man bruker til å representere desimaltall i de fleste programmeringsspråk, for eksempel double i c++.
Med floating point deler man tallet opp i to deler, en såkalt mantissa (grunntallet), og en eksponent. ved å variere verdien på eksponenten kan man flytte rundt på kommaet, og dermed få variabel presisjon, noe som er praktisk i mange tilfeller. problemet er at man ofte får avrundingsfeil ved operasjoner på flyttall, noe som som regel ikke er et problem, men kan bli det i enkelte tilfeller, som for eksempel økonomiprogramvare eller digitale filtre.
Med fixed point står kommaet på samme sted hele tiden. verdiene til de ulike plasseringene vil til venstre for kommaet være det samme som for heltall, altså 2^0, 2^1, 2^2 osv. til høyre for kommaet blir det tilsvarende 2^-1, 2^-2, 2^-3 osv.
Mindre fleksibelt siden man har ikke-variabel presisjon, men operasjonene kan utføres på mye enklere hardware, og man får ikke avrundingsfeil som for flyttall.
-
mov ebx, eax
mul 6
add eax, ebx
som skal være det samme som
i *= 6;
Eller tar jeg feil? lenge siden jeg drev med assembly nå.
Men hva er dette i sammenheng med?
Dette er ikke en MAC operasjon, men en kombinasjon av en addisjon og multiplikasjon. en MAC operasjon tar to faktorer som argument multipliserer disse, og legger så dette til en akkumulator i èn og samme instruksjon. Det er vanlig å bruke i digital signalbehandling.
-
Det du er ute etter er en såkalt lineær transformasjon. Du må lage en matrise som du multipliserer med det originale bildet ditt som da vil transformere koordinatene ned til det projiserte bildet ditt. Jeg kan ikke gi deg noen konkrete eksempler, men det finnes nok informasjon om dette temaet på nett.
-
Jeg antar at det er en "multiply and accumulate" instruksjon du mener. Utifra navnet skulle det være rimelig enkelt å svare på spørsmålet, nemlig èn av hver
-
Det er helt kurant med meningsytringer, men jeg synes du skulle sette halen på eselet når du snakker om "sånne innbitte windows-motstandere". Hvem mener du? Er det noen her i tråden du ikke klarer å ta seriøst?
Beklager, jeg ser at det ikke kom godt frem hva jeg mente. dette var rettet til han som var intervjuet.
-
Jeg klarer ikke å ta sånne innbitte windows-motstandere seriøst. Nå skal jeg ikke si at det er det perfekte operativsystemet, men jeg har holdt mye på med både windows og linux privat og i jobb, og generelt er windows betydelig mer strømlinjeformet. Det eneste tilfellet hvor jeg vil foretrekke linux er hvis jeg skal programmere i C, C++ og python, siden dette er så godt integrert i systemet.
Problemet med linux er at det alltid er ett eller annet som ikke fungerer. Det er kanskje småting, men etterhvert blir man lei av å hele tiden måtte slåss med systemet. Jeg bruker PCen først og fremst som et verktøy, og da er det mye viktigere at det virker og at man har god arbeidsflyt fremfor at APIene er elegant utformet.
Jeg finner også at linux har betydelig tregere respons ved enkelte operasjoner, for eksempel navigasjon i filutforskere. Jeg kan være enig i at windows (spesielt vista) har overmåte høyre maskinkrav, men med en noenlunde oppegående PC går det som en drøm. Linux synes å ha det samme responsivitetsproblemet uansett hvor rask maskinen er.
Linux er desentralisert, og utviklerne er ikke organisert på langt nær like godt som i windows. Resultatet blir at brukergrensesnittet blir mye mindre gjennomtenkt, og man bruker lengre tid på å gjøre de samme oppgavene. Når jeg en gang i blandt bruker linux på jobb av ulike grunner blir jeg som regel irritert over at ting er så knotete.
Ikke meningen å starte noen krig her altså, men avogtil syns jeg det blir litt vel mye haleluja-stemning rundt linux.
-
Jeg begynner å bli litt lei av at folk bruker ordet "data" om "datamaskiner". Data betyr som kjent informasjon, og ikke noe annet.
-
Jeg har behov for å slette alle linjer i en tekstfil ned til og ikke inkludert forekomsten av et bestemt ord ( _start ). Ordet står på begynnelsen av en linje. Dette skal gjøres fra en Makefile. Har noen en ide om hvordan dette kan gjøres?
-
Du bruker ikke for-loopen riktig. Du kan gjerne initialisere variabelen før for-loopen, (selv om det vanligste er å initialisere den inni for-loopen) men da må du legge til en semikolon først, slik at kompilatoren skjønner at initialiseringsfeltet er tomt, slik:
for(;i<11;)
jeg ville uansett foretrukket å legge mer av koden inni deklarasjonen av for-loopen, slik som dette:
int32 i; for (i=-10;i<11;i++) y1=a*i**2;
På denne måten blir det litt mer oversiktlig.
VHDL: hjelp til enkel tellekrets
i Programmering og webutvikling
Skrevet · Endret av kurant
Hei.
Det du bør gjøre er å lage flere instanser av en dekadeteller, som har en carry-utgang. Denne carry-utgangen kan gå høy hver gang telleren starter på nytt. Du bruker så denne utgangen til å drive klokkeinngangen på den neste dekadetelleren.
Jeg anbefaler at du lager et modulært design, dvs at du legger dekadeteller + bcd-enkoder i en egen entitet, og så kan du veldig lett slå sammen så mange som du vil av disse i topp-entiteten din.
Jeg ville valgt et interface på dekadetelleren som følger:
Du kan så instansiere disse på følgende måte:
Håper dette hjelper