Monday, September 7, 2009
Arduino PWM Part 2
The program was easy, as it was just opening the serial port and sending the data, using a fixed protocol. If you go through the code you will be able to figure that out. I don’t want to explain it, because it’s not convoluted. But it did not work as expected. I had to put a delay between reading data and I am not sure why I had to do that. I did search the internet, to find out why a delay is required, but couldn’t find anything. Just found one posting, which didn’t cover the details, on why we needed. I guess its because it takes some time for the serial data to load. I am not sure how important this is for me. But for RTOS, I guess its important and I hope this delay will be a stumbling block in the future and then I will find a way to tackle it. But for now I will just put a delay of 3ms.
In the video you can see the various scenario, that is controlled by the C# code. I have attached the code and the project in the zip file, if anyone ones to download it. Make sure you connect to the correct ports. If in future I fabricate this board, then I will include the PCB dig., which should be simple. But if anyway wants to know it, do let me know.
Files-->
http://www.esnips.com/doc/7a7cc87e-add6-4ae2-91e2-c8263b51effb/motor-with-interface
http://www.esnips.com/doc/1df0e0b1-ad42-4a7c-9095-246b3c9e04b3/Arduino.net
Monday, March 23, 2009
Sorting review so far..insertion the best
Normal Bubbleelapsed--6435455
1>1>1>3>4>6>6>6>10>13>15>18>18>19>21>21>21>22>23>23>23>25>26>27>28>29>29>29>31>31>31>33>33>33>35>36>36>36>36>37>38>39>41>44>44>44>45>45>45>45>48>49>50>51>51>52>53>53>53>53>53>61>64>64>64>64>65>65>66>66>66>66>66>67>67>68>68>69>72>73>74>77>77>79>79>80>80>80>81>81>81>82>83>84>85>85>85>85>85>88>88>88>88>88>90>90>92>94>95>95>96>96>99>100>100>
Decreasing n/window elapsed--22908
1>1>1>3>4>6>6>6>10>13>15>18>18>19>21>21>21>22>23>23>23>25>26>27>28>29>29>29>31>31>31>33>33>33>35>36>36>36>36>37>38>39>41>44>44>44>45>45>45>45>48>49>50>51>51>52>53>53>53>53>53>61>64>64>64>64>65>65>66>66>66>66>66>67>67>68>68>69>72>73>74>77>77>79>79>80>80>80>81>81>81>82>83>84>85>85>85>85>85>88>88>88>88>88>90>90>92>94>95>95>96>96>99>100>100>
Cocktail Sort elapsed--22908
1>1>1>3>4>6>6>6>10>13>15>18>18>19>21>21>21>22>23>23>23>25>26>27>28>29>29>29>31>31>31>33>33>33>35>36>36>36>36>37>38>39>41>44>44>44>45>45>45>45>48>49>50>51>51>52>53>53>53>53>53>61>64>64>64>64>65>65>66>66>66>66>66>67>67>68>68>69>72>73>74>77>77>79>79>80>80>80>81>81>81>82>83>84>85>85>85>85>85>88>88>88>88>88>90>90>92>94>95>95>96>96>99>100>100>
Insertion Sort elapsed--18159
1>1>1>3>4>6>6>6>10>13>15>18>18>19>21>21>21>22>23>23>23>25>26>27>28>29>29>29>31>31>31>33>33>33>35>36>36>36>36>37>38>39>41>44>44>44>45>45>45>45>48>49>50>51>51>52>53>53>53>53>53>61>64>64>64>64>65>65>66>66>66>66>66>67>67>68>68>69>72>73>74>77>77>79>79>80>80>80>81>81>81>82>83>84>85>85>85>85>85>88>88>88>88>88>90>90>92>94>95>95>96>96>99>100>100>
Let me explain what insertion does best. It tries to select a certain window and sorts that window and anything added to that window and slowly increases the window till it covers all. The worse case will be when the sequence is reverse and each entry needs to be move to the right, ie each window needs to sort. Here is such an example-->
Input array {100,50,40,30,20,10,9,8,7,6,5};
Normal elapsed--1939912
5>6>7>8>9>10>20>30>40>50>
Decreasing n/window elapsed--9778
5>6>7>8>9>10>20>30>40>50>
Cocktail Sort elapsed--10896
5>6>7>8>9>10>20>30>40>50>
Insertion Sort elapsed--10057
5>6>7>8>9>10>20>30>40>50>
As you can see, there isn't much significant difference between the last 3 because of the order of the array. It seems to tend to the same complexity O(n2). Here is a good site for this-->http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/insert/insertionen.htm
Tuesday, March 10, 2009
Subset Creator
This code below generates subset of a given set. Its simple and stupid. Can anyone find a better way of doing it...
package DiscreateTut;
import java.lang.Character.Subset;
import java.util.Vector;
public class ShowSubset {
/**
* @param args
*/
static String[] Set= {"a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","a11","a12" };
public static void main(String[] args) {
// TODO Auto-generated method stub
String nullSet="";
String intset=Set[0];
Vector subset = new Vector();
Vector tempSubset=new Vector();
subset.addElement(nullSet);
int x=1;
System.out.println("Start of array");
for(int i=0;i
for (int j=0;j
System.out.println(x+" = "+subset.get(j).toString()+","+Set[i]);
x++;
tempSubset.addElement(subset.get(j).toString()+","+Set[i]);
}
subset.addAll(tempSubset);
tempSubset.clear();
}
}
}
Wednesday, March 4, 2009
Sobel Method Edge Detection
Here are the results-->
Orig Image |