Inlägg

Inlägg som Kallgard har skrivit i forumet
Av Kallgard

Måste det vara en speciell motor för att kunna styra med en PWM signal? Gör man det med en så kallad h-brygga då?

Motorn kan jag inte byta ut utan jag måste koppla in mig mellan motor och bilbatteriet (12-24v) för att styra hastigheten.

Av Kallgard

Kontrollera hastighet på motor med Arduino

Hej!

Jag har precis dragit igång ett projekt där jag vill kontrollera hastigheten på en motor i båda riktningarna med en Arduino. Problemet jag har är att motorn som jag skulle vilja kontrollera ligger på runt 40-50A vilket gör det svårt att hitta en lämplig shield eller h-brygga som passar. Är det någon här som vet om det finns någon sådan i den storleken?

Kanske finns det någon sorts potentiometer (som klarar de höga strömmarna) man kan styra med en motor/stepp motor som man i sin tur styr med Arduinon?

Jag har försökt leta så gott jag kan efter lösningar men eftersom att jag inte har speciellt stor koll på ellära eller Arduinos så tänkte jag fråga er!

Med Vänliga Hälsningar
Magnus

Av Kallgard

Billig dator för cs

Hej!

En kompis till mig bad mig ta reda på om det går att få tag i en billig stationär dator för cs, så tänkte kolla med er om ni har några förslag.

De enda kraven är att den ska klara av cs:go bra och klara en 120 Hz skärm. Samt kosta runt 3500kr.

Vet att det blir svårt att hitta en sådan för den pengen, men värt ett försök.

Är det någon som vet om det går att plocka ihop en sådan dator?

Tack på förhand!

Av Kallgard
Skrivet av era909:

Mm, jag skulle inte använda isalpha() alls i det här fallet. Ex, försök skriva in "Omega 3 kosttillskott" och få det att fungera med isalpha().
Om de inte ändrat uppgiften från förra året så står det: Programmet ska ha felhantering. Det ska t.ex. inte vara möjligt att mata in text där det borde vara siffror, osv! Självklart ska programmet vara uppbyggt av funktioner.

Tänkte bara ge TS en hint på vägen om han ville använda det.

Du har iof rätt, man borde kunna mata in siffror i namnet också.. Felhanteringen när det kommer till att bra mata in siffror har jag koll på! Då behöver jag nog inte kontrollera om namnet är enbart av siffror!

Tack för all hjälp!

Av Kallgard
Skrivet av krille0x7c2:

http://www.asciitable.com där hittar du dina villkor för din if-sats.

Har testat att skapa en if-sats med ascii men det verkar inte heller gå att kontrollera hela arrayen, vet inte om jag gjort rätt dock.
Såhär gjorde jag:

if ((&Item[i].itemName > 65 && &Item[i].itemName < 90 ) && (&Item[i].itemName > 97 && &Item[i].itemName < 122)) { printf("Input is correct!"); } else printf("Invalid input!");

Antar att jag lär loopa igenom hela arrayen för att kontrollera varje position men även med bara en bokstav angivet så fungerar det ej..

Av Kallgard

Skriver jag såhär: if(isalpha(Item[0].itemName) != 0) och bara kontrollerar första positionen där jag tex. skrivit in en bokstav a så händer det ingenting. Så antar att det inte fungerar om jag skulle loopa igenom hela arrayen och kolla varje position i och med att den inte kan kolla ens första positionen. Eller har jag fel?

Av Kallgard
Skrivet av era909:

== för att jämföra, väl?

Ser ut som en uppgift från grundkursen i programmering på MDH btw.

Precis, ska vara == istället! Spelade inte någon roll i detta fallet dock

Yes, stämmer bra! Är på mdh men fastnat lite på en av labbarna!

Av Kallgard
Skrivet av Kreppe:

Den här ser lite mystisk ut..

while(k = 1)

Ska inte vara sådär i slutändan. Är bara för att köra loopen tills if-satsen är sann och break; går ur den.

Av Kallgard
Skrivet av N0iZE:

Kan du inte göra något sådant här?

if(isalpha(Itemi[i].itemName))

Det är något sådant jag skulle vilja göra men det verkar inte fungera.. Den verkar returnera 0 hela tiden oavsett om det är bokstäver eller siffror som läses in. Någon som vet om det går att göra på liknande sätt?

Skrivet av jensa86:

Tänk på att isalpha bara testar en int i taget vilket gör att du måste loopa igenom hela inputen om du vill kolla alla. Sen så kopierar strcpy hela strängen till temp just nu vilket gör att du förmodligen kommer att skriva sönder minnet då den bara är deklarerad som en char och inte har plats för annat än null-termineringen som kopieras.

Jaha okej, jag trodde den kollade hela strängen som skrevs in. Hur borde jag göra istället, för isalpha() verkar inte kunna kontrollera en array?

Av Kallgard

C programmering: Inputvalidering

Hej!

Jag håller på att lära mig C programmering och har fastnat lite när det kommer till input validering. Programmet ska byggas med structs och fråga användaren efter 5 stycken varor som ska skrivas in och sedan ska programmet skriva ut en "Inköpslista". På exemelvis "Namn på varan" ska man enbart kunna skriva in bokstäver, inte siffror. Detta har jag försökt lösa med isalpha() som finns i ctype.h.

Problemet jag har är att det inte går att skriva isalpha(Items[i].itemName) i if-satsen. Jag försökte istället att kopiera Item[].itemName till en ny variabel via strcpy() men den funktionen verkar ta bort första bokstaven. Samt att när listan sedan skrivs ut så syns vara nummer 5 på första platsen men utan första bokstaven..

Är det någon som vet hur jag ska lösa detta? Finns det något bättre sätt att göra detta på?

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> struct shoppingList { char itemName[10]; int quantity; char unit[10]; }; int main() { struct shoppingList Item[5]; int i, j, k = 1; char temp; char unit[200]; int num; for(i=0; i < 5; i++) { /**< Detta är det jag behöver hjälp med. */ do { printf("\nNamn p\x86 vara: "); fflush(stdin); scanf("%s", &Item[i].itemName); strcpy(&temp, Item[i].itemName); /**< Verkar tappa bort första bokstaven.. */ if(isalpha(temp) != 0) { break; } else{ printf("\t\n Invalid input, try again!\n\n"); } } while(k = 1); do { printf("Antal: "); if( scanf("%i", &num) == 1) { Item[i].quantity = num; break; } else printf("\t\n Invalid input, try again!\n\n"); } while(k = 1); printf("Enhet: "); scanf("%s", &Item[i].unit); } printf("\nInk\x94pslistan: \n"); for (j = 0; j < 5 ; j++) { printf("\n %6s \t %1i \t %2s\n", Item[j].itemName, Item[j].quantity, Item[j].unit); } return 0; }

Av Kallgard

Okej tack! Tror jag förstod lite bättre med ditt exempel! Ska se ifall jag kan få ordning på programmet

Av Kallgard

Tack så mycket för svaren!

Yoshman, jag förstår inte riktigt varför man ska skicka in int *arr, size_t sz i rand_array funktionen. Varför ska det vara invärden i den funktionen? Den funktionen ska väl enbart returnera ett värde? Eller har jag fel?

Hur ska jag göra istället för att anropa rand_array() utan att värdena ändras?

I koden som du skrev Yoshman så returneras inget värde vad jag förstår på rand_array?

Av Kallgard

C programmering, söka efter värde i array

Hej!

Jag har precis börjat lära mig c programmering och har stött på lite problem när det kommer till arrayer och funktioner. Jag ska skapa ett program som slumpar fram 10 tal mellan 0 och 10 och spar dessa i en array. Jag ska sedan kunna räkna antalet förekomster av ett givet tal i denna array.

Jag har skapat 3 funktioner, en för att skapa arrayen med slumpade tal, en för att skriva ut arrayen samt en som ska göra själva sökningen. Jag tror jag har kommit en bit på vägen men det fungerar inte riktigt med sökningen. Summan fungerar inte alls och räknar helt tokigt. Jag tror det har att göra med att jag inte returnerar arrayen på rätt sätt. Hur ska jag göra detta för att få det att fungera?

#include <stdio.h> #include <stdlib.h> #include <time.h> int * rand_array(); int print_arr(int numbers[]); int search(); int main() { srand((time(NULL))); print_arr(rand_array()); printf("\n\nTalet 2 f\x94rekommer %i g\x86nger\n", search()); return 0; } int * rand_array(){ int i; static int numbers[10]; for(i=0; i<10; i++) numbers[i] = rand() % 11; return numbers; } int print_arr(int numbers[]){ int i; int *p; p = rand_array(); for (i = 0; i < 10; i++ ) printf("Tal: %i\n", *(p + i)); } int search(){ int i, *sum = 0; int *numbers = rand_array(); for (i=0; i <= 10; i++) { if (*(numbers + i) == 2) sum++; } return sum; }

Av Kallgard

http://AspKoll.se är en mycket bra sida för bland annat CSS och mycket annat.